ImportError: DLL load failed while importing QtWidgets

AI주식자동매매|2024. 10. 12. 15:16
반응형

anaconda 64bit 설치후`
>python -m pip install --upgrade pip

>set CONDA_FORCE_32BIT=1
>conda create -n py38_32 python=3.8
>activate py38_32

>pip install pyqt5

 

 

ImportError: DLL load failed while importing QtWidgets 지정된 모듈을 찾을 수 없습니다.

라는 메세지가 뜰때는 하기 link에서 직접 관련 파일을 다운받습니다.

https://www.riverbankcomputing.com/pypi/simple/pyqt5/

 

Links for pyqt5

 

www.riverbankcomputing.com

저는 kiwoom api 사용하므로 32bit env환경에서 사용하므로 , 32bit용을 다운 받았습니다.

>pip install c:\PyQt5-5.15.12.dev2408131152-cp38-abi3-win32.whl

이렇게 직접 다운받은 파일을 이용해서 설치를 합니다.

그리고, 계속 합니다.

 

>pip install pytz
>pip install numpy pandas requests
>pip install numpy>=1.21.2 pandas>=1.3.0 requests>=2.31

>pip install numpy

>pip install --user pandas==1.5.3 

pandas2.0은 matplotlib 최신버젼과 호환이 되지 않아서 지정된 버젼으로 설치합니다.

>pip install c:\TA_Lib-0.4.24-cp38-cp38-win32.whl

>pip install c:\TA_Lib-0.4.24-cp37-cp37m-win_amd64.whl

 

>pip install mpl_finance
# >pip install pycurl  #
>pip install c:\pycurl-7.45.1-cp38-cp38-win32.whl
  
# Successfully installed PyQt5-5.15.9
>pip install PyQt5Singleton
>pip install slacker
>pip install telegram

>conda install -c conda-forge finance-datareader


#>pip uninstall python-telegram-bot telegram -y
>pip install python-telegram-bot
>pip install python-telegram-bot --upgrade
>pip install python-telegram-bot==13.3 # 20.0a0버젼부터는 dispatcher를 더이상 사용불가합니다. 계속사용하려면13.3을 설치합니다.
>pip install holidays
>pip install gtts
>pip install pyglet==1.5 #2.0이상부터는 python 3.8 이상 사용해야 한다.
>pip install mplfinance #ERROR: Could not build wheels for pillow which use PEP 517 and cannot be installed directly
>pip install lxml
>pip install https://github.com/pyinstaller/pyinstaller/archive/develop.zip
>pip install yfinance
>pip install pandas_datareader
>pip install bs4
>pip install matplotlib 대신 >conda install matplotlib 사용해야 한

>pip install Pillow==9.5.0 #Requirement already satisfied: Pillow==9.5.0 in c:\users\howto\appdata\roaming\python\python38\site-packages (9.5.0)
>pip install pyautogui
>pip install selenium
>pip install scikit-learn #scikit-learn이란 python을 대표하는 머신러닝 라이브러리이다. '사이킷런'이라고 부르기도 한다
>pip install PyYAML #yaml파일의 내용을 딕셔너리로 만들어준다.

 

>conda deactivate

 

여기서부터는 64비트 env환경에서 사용할 환경설정을 시작합니다.
>set CONDA_FORCE_64BIT=1
>conda create -n py38_64 python=3.8 
>activate py38_64

 

>pip install numpy pandas

> pip install pyqt5

> pip install slacker

>pip install telegram

> pip install mplfinance

> pip install pyupbit

>pip install pybithumb

> pip install torch torchvision

> pip install torch torchvision

> pip uninstall python-telegram-bot telegram -y
>pip install python-telegram-bot

> pip install yfinance

> pip install sklearn

> pip install stable_baselines3

> pip install bayes_opt

> pip install bayesian-optimization # bayes_opt 패키지는 **bayesian-optimization**으로 설치해야 합니다.

> pip install gym

> pip install openai

> pip install python-telegram-bot

> pip install python-telegram-bot --upgrade

 


># pip install torch===1.3.1 torchvision===0.4.2 -f https://download.pytorch.org/whl/torch_stable.html #No matching distribution found for torch===1.3.1

>pip install holidays
>pip install gtts
>pip install pyglet #pyglet 2.0.1 requires Python 3.8 or newer.
>
>pip install lxml
>pip install https://github.com/pyinstaller/pyinstaller/archive/develop.zip
>pip install yfinance
>pip install pandas_datareader
>pip install gym==0.25.2
>pip install pygame
>pip install pytz
>pip install -U finance-datareader
>CUDA download
>pip install -U scikit-learn or conda install scikit-learn
>Visual Studio Downloadde
>pip install sklearn 

>set CONDA_FORCE_64BIT=1
>conda create -n py39_64 python=3.9 anaconda
>activate py39_64

>pip install torch
#최신버전의 tensrflow를 설치한다.
>pip install tensorflow
or 
>py -m pip install tensorflow
or
>python -m pip install --user --upgrade pip
Collecting pip
  Using cached pip-20.1.1-py2.py3-none-any.whl (1.5 MB)
Installing collected packages: pip
  WARNING: The scripts pip.exe, pip3.7.exe and pip3.exe are installed in 'C:\Users\howto\AppData\Roaming\Python\Python37\Scripts' which is not on PATH.
  Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.
Successfully installed pip-20.1.1

PATH에 추가해도 안됨..

(env 삭제)
>conda env remove -n ENV_NAME



또는
If you are using python-3

>py -m pip install --upgrade pip
>py -m pip install tensorflow

> pip install --upgrade tensorflow

$ pip install numpy scipy
$ pip install scikit-learn
$ pip install pillow
$ pip install h5py
talling Keras with TensorFlow backendShell
$ pip install keras
$ workon keras_tf

>pip install pyinstaller

>pyinstaller --version
3.6
# PyQt5를 포함하여 main.exe 실행파일 만들기
>pyinstaller --windowed --onefile main.py
  exe실행시 ("Fatal error detected","Failed to execute script main") 메세지 뜸.
그래서, 이번엔..
>pyinstaller --onefile main.py

다시..
>pyinstaller myfile.py --upx-dir=..\upx391w -y --onefile

=> cannot import name 'pywrap_tensorflow' from 'tensorflow_core.python'


결국, 
"if you are using anaconda, python 3.7 is installed by default, so you have to downgrade it to 3.6:"
그래서..
>conda install python=3.6
실행함...
그리고, 다시..
# Requires the latest pip
>pip install --upgrade pip

# Current stable release for CPU and GPU
>pip install --ignore-installed --upgrade tensorflow

# Or try the preview build (unstable)
>pip install tf-nightly

반응형

댓글()

Anaconda Installers를 활용한 파이썬 설치 및 개발환경 설정

반응형

오늘 Anaconda 3.8 64bit버젼을 다시 설치를 하게되었는데,

32bit env환경에서 PyQt5 를 설치할 수가 없었습니다.

결국 해결은 했습니다만, 저처럼 고생하실 분들을 위해서 미리 적어둡니다.

혹시, 여기서 저와 같이 고생하시는 분들에게 도움이 된다면 좋겠습니다.

 

설치 오류났던 환경은 다음과 같습니다.

Windows10환경은 64bit 환경이라, 64-bit용 Anaconda를 설치하여 Python을 설치를 하게됩니다.

현재 최종버젼이 3.8버젼이라서, 이 버젼을 다운받아 설치를 했습니다.

주식 API를 사용하기 위해서는 32bit 가상환경을 만들어야만 하기에,

파이썬 버젼 3.8에 맞춰 가상환경을 만들었습니다.

>python -m pip install --upgrade pip

>set CONDA_FORCE_32BIT=1
>conda create -n py38_32 python=3.8 anaconda
>activate py38_32

문제는 여기서 부터 발생한것 같습니다.

추가로 pyqt5를 설치했는데.. 제대로 설치가 되지 않고, 오류가 계속 발생했습니다.

>pip install pyqt5
>pip install mpl_finance

 

오류유형1)

Could not find a version that satisfies the requirement PyQt5-sip

오류유형2)

DLL load failed when importing PyQt5

 

결국, 파이썬 python=3.8 을 사용한것이 문제인가 싶어서, python=3.7을이용했더니,

오류가 없어졌습니다.

결국, 정리하자면,

32bit env환경에서 Python 3.8버젼은 PyQt5와 호환되지 않는것 같다는 결론입니다.

1. env 삭제
>conda env remove -n py38_32

2. 폴더삭제
   C:\ProgramData\Anaconda3\envs\py38_32

3. env다시 생성
>set CONDA_FORCE_32BIT=1
>conda create -n py37_32 python=3.7 anaconda
>activate py37_32
>conda env list

>pip install pyqt5
>pip install mpl_finance

 

위 작업들은 anaconda prompt를 사용하여 설치를 했습니다.

추가로, 현재 설치된 파이썬의 버젼을 확인해 보겠습니다.

(py37_32) C:\Windows\system32>python -V
Python 3.8.5

파이선이 설치되어 있는 위치 확인하기

반응형

댓글()

Python의 독립적인 가상 실행 환경(Environment)을 위한 Anaconda env 설정 방법

반응형

아나콘다 패키지로 설치한 후, conda 명령어를 이용해서 env를 생성/삭제 및 관리한다.

 

1. anaconda 64bit 설치

  https://www.anaconda.com/products/individual#download-section

 

Individual Edition | Anaconda

🐍 Open Source Anaconda Individual Edition is the world’s most popular Python distribution platform with over 20 million users worldwide. You can trust in our long-term commitment to supporting the Anaconda open-source ecosystem, the platform of choice

www.anaconda.com

 

python 3.7버젼 64bbit를 선택한다.

repo.anaconda.com/archive/Anaconda3-2020.02-Windows-x86_64.exe

주의: python 홈페이지에 가서 python을 다운받지 말자. Anaconda 설치를 하면 python이 자동으로 설치가 된다.

      이제 anaconda 홈페이지로 가서 다운을 받자. 64 bit 최신버전을 다운로드하도록 하자.

      https://youngjoongkwon.com/2018/01/26/windows-%ED%99%98%EA%B2%BD%EC%97%90%EC%84%9C-anaconda-tensorflow-%EC%84%A4%EC%B9%98%EB%AC%B8%EC%A0%9C-%ED%95%B4%EA%B2%B0%ED%95%98%EA%B8%B0-no-module-named-tensorflow-%EC%97%90%EB%9F%AC/

 

Windows 환경에서 Anaconda + Tensorflow 설치문제 해결하기 (No module named ‘tensorflow’ 에러 해결법)

python을 따로 설치한 다음 anaconda를 설치하고, tensorflow를 설치했다가 No module named ‘tensorflow’ 에러가 떴다. 물론 tensorflow는 실행할 수 없었다. 검색을 해보니 나와 비슷한 문제를 겪고있는 사람��

youngjoongkwon.com

 

2. Anaconda Prompt 실행

python version이 3.7.6임을 확인한다.

  tenserflow가 3.8버젼을 지원하지 않습니다. 3.7버젼도 3.7.6 안전한 검증된 버젼으로 설치를 권장합니다.

  (추가)

  anaconda 64bit 설치후, 제일 먼저 해주세요..
  >python -m pip install --upgrade pip

3. Python 3.8(최신) 버전의 ‘py38_32’라는 이름으로 32bit용 env를 생성합니다. 

   (키움과 같은 주식 API는 아직 32bit만 지원하므로, 32bit 가상환경을 별도로 만들어야 합니다.)

>set CONDA_FORCE_32BIT=1
>conda create -n py37_32 python=3.7 anaconda
>activate py37_32
>conda env list

4. 추가적으로 64bit용 가상환경도 별도설치하여 향후 64bit환경 개발시 사용하도록 한다.

>conda deactivate

>set CONDA_FORCE_64BIT=1
>conda create -n py38_64 python=3.8 anaconda
>activate py38_64

>pip install tensorflow  

   * Python을 anaconda에서 설치한 버젼과 달리, 별도로 설치할 경우,

     tensorflow가 설치되지 않습니다. 주의해 주세요~

5. Anaconda에서 생성한 env환경을 확인합니다. 

 

6. 가상환경 제거하기

>conda remove -n py37_32 --all

>conda remove -n py38_64 --all

 

7. 최신버젼의 tensorflow를 설치한다.

>pip install tensorflow
or 
>py -m pip install tensorflow
or
>python -m pip install --user --upgrade pip
반응형

댓글()

UnicodeDecodeError: 'utf-8' codec can't decode byte

AI빅데이터|2020. 3. 15. 10:18
반응형

다음과 같이 subprocess에서 받아온 값에 한글이 포함될 경우,

Abaconda prompt에서 py를 실행할 경우, 제목과 같은 오류가 발생한다.

 

<코드>

RLTrader = subprocess.Popen([envPath, exeFilePath], shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE, creationflags=subprocess_flags)
(stdout, stderr) = RLTrader.communicate(input=transData)
print("aftershock" + str(stdout))
RLTrader_results = stdout
RLTrader_results02 = RLTrader_results.decode()

 

<실행결과>

aftershockb'\xb0\xfc\xb8\xc1&&&0\r\n'
Traceback (most recent call last):
  File "pytrader4.py", line 517, in 
    SH.Start_of_RLTrader()
  File "pytrader4.py", line 294, in Start_of_RLTrader
    self.Requirement_of_current()
  File "pytrader4.py", line 425, in Requirement_of_current
    RLTrader_results02 = RLTrader_results.decode()
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xb0 in position 0: invalid start byte

 

 

RLTrader = subprocess.Popen([envPath, exeFilePath], shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE, creationflags=subprocess_flags)
(stdout, stderr) = RLTrader.communicate(input=transData)
print("aftershock" + str(stdout))
RLTrader_results = stdout 
RLTrader_results02 = RLTrader_results.decode(encoding='CP949')

 

이렇게 수정해 주니, 에러가 없어졌네요..

반응형

댓글()