code

Windows에서 "import tensorflow"를 실행하면 "_pywrap_tensorflow"라는 모듈 없음 오류가 생성됩니다.

codestyles 2020. 10. 16. 07:27
반응형

Windows에서 "import tensorflow"를 실행하면 "_pywrap_tensorflow"라는 모듈 없음 오류가 생성됩니다.


Windows에서 TensorFlow는 import tensorflow을 실행 한 후 다음 오류 중 하나 또는 둘 다를보고합니다 .

  • No module named "_pywrap_tensorflow"
  • DLL load failed.

문제는 나를위한 cuDNN 라이브러리였습니다. 어떤 이유로 든 cudnn-8.0-windows10-x64-v6.0이 작동하지 않았습니다. cudnn-8.0-windows10-x64-v5.1을 사용했습니다.

Win10 64 및 Nvidia GTX780M에서 작동하는 설정 :

  • 시스템 / 경로를 확인하여 lib MSVCP140.DLL이 있는지 확인 하십시오.
  • 여기 에서 python 3.5.3-amd64 용 Windows 설치 프로그램을 실행 하세요. 최신 버전은 작동하지 않을 수 있으므로 시도하지 마세요.
  • 여기 에서 CUDA 8.0 용 cuDNN v5.1을 가져옵니다. 사용자 폴더 또는 다른 알려진 위치에 넣습니다 (경로에 필요함).
  • 여기 에서 CUDA 8.0 x86_64 받기
  • cuDNN libs 및 python을 가리 키도록 예상대로 PATH vars를 설정합니다 (python 설치 중에 Python 경로를 추가해야 함)
  • ".DLL"이 PATHEXT 변수에 포함되어 있는지 확인하십시오.
  • tensorflow 1.3을 사용하는 경우 cudnn64_6.dll github.com/tensorflow/tensorflow/issues/7705 를 사용하고 싶습니다.

Windows 32를 실행하는 경우 위에서 언급 한 파일의 32 비트 버전을 가져와야합니다.


제 경우에는 / bin 폴더에있는 "cudnn64_6.dll"파일의 이름을 "cudnn64_5.dll"로 바꿔야 오류가 사라졌습니다. 나는 이것을 알아 내기 위해 쉽게 2 시간을 보냈고 나는 편지의 공식 설치 가이드를 따랐다. 이는 pip (공식적으로 지원됨) 및 conda (커뮤니티 지원됨)를 통한 설치에 해당됩니다.


두 오류는 시스템에 MSVCP140.DLLTensorFlow가 필요로하는 설치되지 않았 음을 나타냅니다 .

이 오류를 수정하려면 :

  1. 여부를 결정 MSVCP140.DLL당신에 %PATH%변수입니다.
  2. 경우 MSVCP140.DLL당신에없는 %PATH%, 설치 비주얼 C ++ 2015 재배포 이 DLL을 포함 (64 버전).

AMD CPU에는 Win7 Pro 64 비트가 있고 GPU는 없습니다. https://www.tensorflow.org/install/install_windows의 "기본 pip로 설치"의 지침을 따랐습니다 . 설치 단계는 괜찮 았지만 tensorflow를 가져 오려는 시도는 악명 높은 결과를 낳았습니다.

ImportError : '_pywrap_tensorflow_internal'이라는 모듈이 없습니다.

이것은 구성에 따라 관련되지 않은 많은 일이 잘못 될 수있는 상황 중 하나 인 것으로 보이며 모두 동일한 오류로 이어집니다.

제 경우에는 MSVCP140.DLL을 설치하는 것이 정답이었습니다.

(a) 파일 C : \ Windows \ System43 \ MSVCP140.DLL이 있고 (b) 64 비트 시스템이 있으면 추가로 C : \ Windows \ SysWOW64 \ MSVCP140이있는 경우 MSVCP140.DLL이 이미 있습니다. DLL입니다.

수동으로 설치했는데 불필요했습니다 (재배포 가능 파일은 전체 Visual C ++ 개발 엉망이 아니며 크지 않습니다). 이 스레드의 앞부분에 게시 된 링크를 사용하여 설치하십시오. Visual C ++ 2015 redistributable .

또한 Windows가 나중에 문제를 일으키는 파일 쓰기 방지를 시도하기 때문에 Python의 기본 설치 디렉토리를 재정의하고 C : \ Program Files 아래가 아닌 곳에 두는 것이 좋습니다.


CPU 만있는 tensorflow의 경우 :


명령을 사용하여 tensorflow를 설치했습니다.

pip3 install --upgrade tensorflow

이것은 설치 tensorflow 1.7
되었지만 다음을 python 3.6.5 amd64사용하여 tensorflow를 가져올 수 없습니다 .

import tensorflow as tf

그래서 다음 명령 1.71.5사용하여 tensorflow 버전을 다운 그레이드했습니다 .

pip3 install tensorflow==1.5

이렇게하면 이전 버전이 제거되고 1.5. 이제 작동합니다.

CPU 가 필요한 AVX 명령 세트를 지원하지 않는 것 같습니다 .tensorflow 1.7

나는 한 MSVCP140.DLL환경 변수에서 PATHEXT 변수에 시스템 폴더 및 .DLL에.


cuDNN으로 인해 문제가 발생합니다. PATH 변수가 작동하지 않습니다. cuDNN 폴더의 파일을 적절한 CUDA 8.0 폴더 구조로 복사해야합니다.


TensorFlow이 필요 MSVCP140.DLL하며 시스템에 설치되어 있지 않을 수 있습니다. 이를 해결하려면 터미널을 열거 나 다음 링크를 붙여 넣으십시오.

C:\> pip install --upgrade https://storage.googleapis.com/tensorflow/windows/cpu/tensorflow-1.0.0-cp35-cp35m-win_amd64.whl 

이것은 TensorFlow의 CPU 전용 버전을 설치하기위한 것입니다.


구형 하드웨어에서 실행하는 경우 :

tensorflow-gpu 1.6을 사용하는 구형 CPU로 인해 이와 동일한 오류가 발생할 수 있습니다.

CPU가 2011 년 이전에 만들어진 경우 최대 tensorflow-gpu 버전은 1.5입니다.

Tensorflow 1.6에는 CPU에 대한 AVX 지침이 필요합니다. 여기에서 확인 : Tensorflow Github 문서

AVX 지원 CPU : Wiki AVX CPU

내 conda 환경에서 tensorflow를 위해 무엇을 했습니까?

pip install --ignore-installed --upgrade tensorflow-gpu==1.5

많은 시행 착오 끝에 VC ++ 2015 Redistributable , cuDNN DLL 및 기타 모든 종속성이 PATH에서 액세스 가능한지 확인한 후 Tensorflow GPU 가 Python에서만 작동 하는 것처럼 보입니다 3.5.2(이 글을 쓰는 시점에서).

따라서 사용하는 경우 Anaconda

  • conda create -n tensorflow-gpu python=3.5.2
  • activate tensorflow-gpu
  • pip install tensorflow-gpu

그런 다음 파이썬 인터프리터를 열고 확인하십시오.

>>> import tensorflow as tf
>>> sess = tf.Session(config=tf.ConfigProto(log_device_placement=True))

속성이있는 장치 0 발견 :
이름 : GeForce 940M
메이저 : 5 마이너 : 0
memoryClockRate (GHz) 1.176
pciBusID 0000 : 06 : 00.0
총 메모리 : 2.00GiB
여유 메모리 : 1.66GiB

크레딧 : 이 깔끔한 가이드


저에게 문제는 그래픽 카드의 요구 사항과 일치하지 않는 cuDNN 라이브러리였습니다. 6.0 버전을 다운로드했지만 GTX980ti의 경우 nvidia 웹 사이트에서 권장하는 컴퓨팅 기능은 5.1 ( http://developer.nvidia.com/cuda-gpus )이어서 5.1을 다운로드하고 6.0 버전을 교체했습니다. 그것이 작동하기 시작했습니다.


각 Tensorflow의 버전마다 다른 버전의 CuDnn이 필요합니다. www.tensorflow.org에서는 설치 가이드에서 언급하지 않았습니다!

제 경우에는 cuDNN 6을 사용하는 tensorflow 버전 1.3을 사용합니다. https://github.com/tensorflow/tensorflow/releases .

Tensorfow 버전과 cuDNN 버전이 일치하는 경우 확인하십시오.

그리고 cuDNN에 대한 경로 환경을 설정하십시오. 그래도 작동하지 않으면 @Chris Han의 의견을 확인하십시오.


Windows에서 Powershell / cmd를 열어두고 싶을 수 있습니다. Powershell을 닫았다가 다시 열기로 결정할 때까지 합리적인 시간을 보냈습니다.


Windows에 tensorflow GPU를 설치하려는 경우이 쉽고 흥미로운 튜토리얼을 찾을 수 있습니다 .

참고 : 예를 들어 PyCharm을 사용하는 경우 인터프리터를 생성 된 conda 환경으로 변경해야합니다.


Windows 시스템에 대한 이 게시물 에서 "DLL로드 실패"문제를 해결하기위한 일반적인 접근 방식을 게시했습니다 .

  1. DLL 종속성 분석기 종속성 을 사용 <Your Python Dir>\Lib\site-packages\tensorflow\python\_pywrap_tensorflow_internal.pyd하여 정확히 누락 된 DLL ( ?DLL 옆에 표시됨) 을 분석 하고 확인합니다 . .pyd 파일의 경로는 내가 설치 한 TensorFlow 1.9 GPU 버전을 기반으로합니다. 이름과 경로가 다른 TensorFlow 버전에서 동일한 지 확실하지 않습니다.

  2. 누락 된 DLL에 대한 정보를 찾아 문제를 해결하려면 적절한 패키지를 설치하십시오.


DLL을 찾을 수 없습니다. 수정하려면 Visual C ++ 2015 재배포 가능 패키지를 설치합니다.


문제는 나를위한 cuDNN 라이브러리였습니다. Windows PATH에 cuDNN DLL (LIB 파일이 아님)의 디렉토리 (아마도 bin 폴더)를 추가 한 후 테스트 코드 를 실행할 수있었습니다 .

참고로 PIP 및 내 OS : Windows 7 및 IDE : Visual Studio 2015를 사용하여 소스에서 TensorFlow를 설치했습니다.


TensorFlow 릴리스 1.3.0에서는 Cudnn 5.0이이 오류를 제공하므로 Cudnn 5.0 대신 Cudnn 6.0을 사용해야합니다. Cudnn 6.0에 경로 변수를 추가하는 것을 잊지 마십시오. cudnn64_6.dll을 사용하면 Tensorflow가 잘 작동합니다. 아래 링크를 읽으십시오. https://github.com/tensorflow/tensorflow/blob/master/RELEASE.md#release-130


내 2 센트 :

CUDA 8.0을 Windows 7에 제대로 설치하는 데 많은 문제가있었습니다. 이전 버전이 설치되어 있고 업그레이드를 원했기 때문에이를 제거하고 CUDA 8.0 (텐서 플로우 1.3 용)을 설치하려고했습니다. 매번 설치가 실패하고 CUDA 7.5로 다운 그레이드하려고했고 설치할 수 있었지만 tensorflow에 많은 문제가있었습니다 (여기에 설명 된 PATH 문제와 유사). 간단히 말해서, 저에게 효과가 있었던 것은 다음과 같습니다.

1) 모든 NVIDIA 구성 요소 제거 (디스플레이 그래픽 드라이버 제외)

2) CUDA 툴킷 8.0 (및 패치) 다운로드 https://developer.nvidia.com/cuda-downloads

3) CheckSum MD5 (MS https://www.microsoft.com/en-ca/download/confirmation.aspx?id=11533을 사용 했지만 어떤 방식 으로든 사용)를 확인하여 정상인지 확인합니다 (여러 번 발생했습니다. 내 WiFi 라우터가 분명히 있기 때문에 설치 프로그램이 제대로 다운로드되지 않았습니다).

4) CUDA 툴킷 설치 프로그램을 루트로 실행하십시오.

5) cudnn 8.0 v6을 다운로드하고 해당 위치를 PATH 변수 https://developer.nvidia.com/rdp/cudnn-download에 추가합니다.

도움이되고 두통을 덜어주기를 바랍니다 ...

참고 :이 스크립트는 문제를 디버깅하는 데 많은 도움이되었습니다! (감사합니다 mrry) https://gist.github.com/mrry/ee5dbcfdd045fa48a27d56664411d41c


나는 나를 위해 일한 솔루션을 제공하려고 노력할 것입니다. 다양한 문제가 이러한 상황으로 이어질 수있는 것 같습니다.

32 비트 소프트웨어는 64 비트 OS에서 작동합니다. 64 비트 OS에 anaconda-3 (32 비트)를 설치했습니다. 완벽하게 잘 작동했습니다. 내 컴퓨터에 tensorflow를 설치하기로 결정했는데 처음에는 설치되지 않았습니다. conda 환경을 사용하여 tensorflow를 설치했는데이 오류가 발생했습니다.

해결책은 64 비트 OS를 실행하는 경우 64 비트 아나콘다를 설치하고 32 비트 OS 인 경우 32 비트 아나콘다를 설치하는 것 입니다. 그런 다음 Windows 용 tensorflow 웹 사이트 (아나콘다 설치)에 언급 된 표준 절차를 따르십시오. 이를 통해 문제없이 tensorflow를 설치할 수있었습니다.


내 대답은 Windows 10에서 다음을 시도했을 때만 Windows 10 사용자를위한 것입니다. 위의 답변 중 일부를 확장하면 이것을 제안합니다. 아나콘다를 사용하는 경우 모든 것을 피하고 명령을 사용하여 anaconda-navigator간단히 설치할 수 있습니다.

conda install -c anaconda anaconda-navigator

그런 다음 명령을 사용하여 명령 프롬프트에서 탐색기를 시작할 수 있습니다.

anaconda-navigator

이 명령을 실행하면 가상 환경을 만들고 python = 3.5.2로 환경을 만들고 gui를 사용하여 검색 상자에서 모듈을 검색하여 tensorflow-gpu 또는 tensorflow 모듈을 설치할 수있는 간단한 GUI가 표시됩니다. 올바른 cuda 파일을 설치하는 방법. anaconda navigator를 사용하는 것이 가장 간단한 솔루션입니다.

아나콘다를 사용하지 않는 경우 다음 사항에주의하십시오.

tensorflow-gpu 1.3에는 python 3.5.2, cuda 개발 키트 8.0 및 cudaDNN 6.0이 필요하므로 설치할 때 명령을 실행해야합니다.

pip install tensorflow-gpu==1.3

tensorflow-gpu 1.2.1 이하에는 python 3.5.2, cuda 개발 키트 8.0 및 cudaDNN 5.1이 필요하므로 설치할 때 명령을 실행해야합니다.

pip install tensorflow-gpu==1.2.1

아래는 위의 두 프로세스 모두에 대해 따라야하는 단계입니다. 경로 변수 설정 다음 시스템 변수가 있어야합니다.

CUDA_HOME = "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0"
CUDA_PATH = "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0"
CUDA_PATH_V8.0 = "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0"

PATHTEXT는 다른 확장자와 함께 ".DLL"을 포함해야합니다.

".COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC;.PY;.DLL"

또한 경로에 다음을 추가하십시오.

C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0\lib\x64
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0\extras\CUPTI\libx64;
C:\Windows\SysWOW64;
C:\Windows\System32        

오류가 발생하면 mrry에서 아래 코드를 실행하여 다운로드 할 수 있습니다.이 코드는 설정을 확인하고 문제가 있는지 알려줍니다. https://gist.github.com/mrry/ee5dbcfdd045fa48a27d56664411d41c

참조 : http://blog.nitishmutha.com/tensorflow/2017/01/22/TensorFlow-with-gpu-for-windows.html

위의 참조는 매우 유용합니다. 이 답변에 대한 개선 사항에 대해 의견을 보내주십시오. 도움이 되었기를 바랍니다. 감사합니다.


tensorflow 1.3은 아직 cuda 9.0을 지원하지 않습니다 . 나는 cuda 8.0으로 저하되면 작동합니다.


2019 년에이 게시물을 찾은 사람들에게는 Python 버전 3.7이 TensorFlow를 지원하지 않기 때문에이 오류가 발생할 수도 있습니다 ( https://www.tensorflow.org/install/pip 참조 ). 따라서 Python 버전을 확인하십시오.

python --version

3.6보다 큰 경우 3.6으로 다운 그레이드해야합니다. Anaconda의 경우 :

conda install python=3.6

그런 다음 TensorFlow를 설치합니다.

pip install tensorflow

Btw, GPU 버전이 없었기 때문에 제 경우에는 CUDA 관련 문제가 없었습니다.


(같은 문제에 란 2019년 9월 9일 ) 조사하면서 [SO] : 훈련 tensorflow의 추정 API를 사용하는 동안 오류 .

설정:

오류 :

[cfati@CFATI-5510-0:e:\Work\Dev\StackOverflow\q057588589]> "e:\Work\Dev\VEnvs\py_064_03.07.03_test0\Scripts\python.exe" -c "import tensorflow as tf"
Traceback (most recent call last):
  File "e:\Work\Dev\VEnvs\py_064_03.07.03_test0\lib\site-packages\tensorflow\python\pywrap_tensorflow.py", line 58, in <module>
    from tensorflow.python.pywrap_tensorflow_internal import *
  File "e:\Work\Dev\VEnvs\py_064_03.07.03_test0\lib\site-packages\tensorflow\python\pywrap_tensorflow_internal.py", line 28, in <module>
    _pywrap_tensorflow_internal = swig_import_helper()
  File "e:\Work\Dev\VEnvs\py_064_03.07.03_test0\lib\site-packages\tensorflow\python\pywrap_tensorflow_internal.py", line 24, in swig_import_helper
    _mod = imp.load_module('_pywrap_tensorflow_internal', fp, pathname, description)
  File "e:\Work\Dev\VEnvs\py_064_03.07.03_test0\lib\imp.py", line 242, in load_module
    return load_dynamic(name, filename, file)
  File "e:\Work\Dev\VEnvs\py_064_03.07.03_test0\lib\imp.py", line 342, in load_dynamic
    return _load(spec)
ImportError: DLL load failed: The specified module could not be found.

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "e:\Work\Dev\VEnvs\py_064_03.07.03_test0\lib\site-packages\tensorflow\__init__.py", line 24, in <module>
    from tensorflow.python import pywrap_tensorflow  # pylint: disable=unused-import
  File "e:\Work\Dev\VEnvs\py_064_03.07.03_test0\lib\site-packages\tensorflow\python\__init__.py", line 49, in <module>
    from tensorflow.python import pywrap_tensorflow
  File "e:\Work\Dev\VEnvs\py_064_03.07.03_test0\lib\site-packages\tensorflow\python\pywrap_tensorflow.py", line 74, in <module>
    raise ImportError(msg)
ImportError: Traceback (most recent call last):
  File "e:\Work\Dev\VEnvs\py_064_03.07.03_test0\lib\site-packages\tensorflow\python\pywrap_tensorflow.py", line 58, in <module>
    from tensorflow.python.pywrap_tensorflow_internal import *
  File "e:\Work\Dev\VEnvs\py_064_03.07.03_test0\lib\site-packages\tensorflow\python\pywrap_tensorflow_internal.py", line 28, in <module>
    _pywrap_tensorflow_internal = swig_import_helper()
  File "e:\Work\Dev\VEnvs\py_064_03.07.03_test0\lib\site-packages\tensorflow\python\pywrap_tensorflow_internal.py", line 24, in swig_import_helper
    _mod = imp.load_module('_pywrap_tensorflow_internal', fp, pathname, description)
  File "e:\Work\Dev\VEnvs\py_064_03.07.03_test0\lib\imp.py", line 242, in load_module
    return load_dynamic(name, filename, file)
  File "e:\Work\Dev\VEnvs\py_064_03.07.03_test0\lib\imp.py", line 342, in load_dynamic
    return _load(spec)
ImportError: DLL load failed: The specified module could not be found.


Failed to load the native TensorFlow runtime.

See https://www.tensorflow.org/install/errors

for some common reasons and solutions.  Include the entire stack trace
above this error message when asking for help.

"결함이있는"모듈 ( Dependency Walker 덕분에)을 살펴보면 그 자체가 누락 된 것이 아니라 일부 종속성 ( cu * _ 100 .dll 파일)이 있음이 밝혀졌습니다 .

Img0

Check [SO]: Python Ctypes - Multidimensional arrays: loading dll throws OSError: [WinError 193] %1 is not a valid Win32 application (@CristiFati's answer) (the Conslusions section at the end) for more details on this kind of errors.
I had an older CUDA Toolkit version (8), and as a consequence, the cu*_80.dll files.

Upgrading to TensorFlow-GPU 1.14.0 ("e:\Work\Dev\VEnvs\py_064_03.07.03_test0\Scripts\python.exe" -m pip install --upgrade tensorflow-gpu), made the error a bit clearer (and also shorter):

[cfati@CFATI-5510-0:e:\Work\Dev\StackOverflow\q057588589]> "e:\Work\Dev\VEnvs\py_064_03.07.03_test0\Scripts\python.exe" -c "import tensorflow as tf"
Traceback (most recent call last):
  File "e:\Work\Dev\VEnvs\py_064_03.07.03_test0\lib\site-packages\tensorflow\python\platform\self_check.py", line 75, in preload_check
    ctypes.WinDLL(build_info.cudart_dll_name)
  File "c:\install\x64\python\python\03.07.03\Lib\ctypes\__init__.py", line 356, in __init__
    self._handle = _dlopen(self._name, mode)
OSError: [WinError 126] The specified module could not be found

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "e:\Work\Dev\VEnvs\py_064_03.07.03_test0\lib\site-packages\tensorflow\__init__.py", line 28, in <module>
    from tensorflow.python import pywrap_tensorflow  # pylint: disable=unused-import
  File "e:\Work\Dev\VEnvs\py_064_03.07.03_test0\lib\site-packages\tensorflow\python\__init__.py", line 49, in <module>
    from tensorflow.python import pywrap_tensorflow
  File "e:\Work\Dev\VEnvs\py_064_03.07.03_test0\lib\site-packages\tensorflow\python\pywrap_tensorflow.py", line 30, in <module>
    self_check.preload_check()
  File "e:\Work\Dev\VEnvs\py_064_03.07.03_test0\lib\site-packages\tensorflow\python\platform\self_check.py", line 82, in preload_check
    % (build_info.cudart_dll_name, build_info.cuda_version_number))
ImportError: Could not find 'cudart64_100.dll'. TensorFlow requires that this DLL be installed in a directory that is named in your %PATH% environment variable. Download and install CUDA 10.0 from this URL: https://developer.nvidia.com/cuda-90-download-archive

Steps:

  • Uninstall any CUDA Toolkit version (optional)
  • Install [nVidia.Developer]: CUDA Toolkit 10.0 Archive
    • Make sure to install v10.0 (that this TensorFlow-GPU version was built against). I installed v10.1 (which was the latest, and also the recommended version at the answer time), and the .dll names didn't match (cu*_101.dll). Since I didn't want to install v10.0, I created some symlinks (with the "correct" names) to the existing files, and it worked. But bear in mind that this is unsupported!!! You may experience funny behavior (including crashes). This is a (lame) workaround (gainarie)
    • Additionally, a compatible (meaning that it's for a specific CUDA Toolkit version) cuDNN version ([nVidia.Developer]: cuDNN Archive) is required. In order to access the download URL, nVidia membership is required

After the above steps, and also setting the correct paths, it worked:

[cfati@CFATI-5510-0:e:\Work\Dev\StackOverflow\q057588589]> set PATH=%PATH%;%CUDA_PATH%\bin;f:\Install\x64\NVidia\GPU Computing Toolkit\cuDNN\7.6\bin

[cfati@CFATI-5510-0:e:\Work\Dev\StackOverflow\q057588589]> "e:\Work\Dev\VEnvs\py_064_03.07.03_test0\Scripts\python.exe" -c "import tensorflow;print(\"Success!!!\")"
Success!!!

참고URL : https://stackoverflow.com/questions/42011070/on-windows-running-import-tensorflow-generates-no-module-named-pywrap-tenso

반응형