web-dev-qa-db-fra.com

Tensorflow-gpu avec pyinstaller

Essayer de distribuer un programme qui repose sur tensorflow ...

En utilisant tensorflow, cela fonctionne parfaitement en tant que script et avec pyinstaller. En utilisant tensorflow-gpu, il fonctionne comme script mais pas avec pyinstaller. Les dll cuda et cudnn ont été copiées dans le dossier bundle par pyinstaller.

J'utilise python 3.6.5 et tensorflow 1.7.0. (Peut changer de version si ça aide ...)

Message d'erreur:

Traceback (l'appel le plus récent en dernier): Fichier "site-packages\tensorflow\python\pywrap_tensorflow.py", ligne 58, dans Fichier "c:\utilisateurs\aleks\appdata\local\programmes\python\python36\lib\site-packages\PyInstaller\loader\pyimod03_importers.py ", ligne 631, dans exec_module exec (bytecode, module. dict ) Fichier "sites-packages\tensorflow\python\pywrap_tensorflow_internal.py", ligne 18, dans Fichier "site-packages\tensorflow\python\pywrap_tensorflow_internal.py", ligne 17, dans swig_import_helper Fichier "importlib__init__.py", ligne 126, dans import_module ModuleNotFoundError: aucun module nommé "tensorflow.python._pywrap_tensorflow_internal"

Lors du traitement de l'exception ci-dessus, une autre exception s'est produite:

Traceback (dernier appel le plus récent): Fichier "interface.py", ligne 14, dans Fichier "c:\utilisateurs\aleks\appdata\local\programmes\python\python36\lib\site-packages\PyInstaller\loader\pyimod03_importers.py ", ligne 631, dans exec_module exec (bytecode, module. dict ) Fichier" packages-site\tensorflow__init__. py ", ligne 24, dans Fichier" c:\utilisateurs\aleks\appdata\programmes\python\python36\lib\site-packages\PyInstaller\loader\pyimod03_importers.py ", ligne 631, in exec_module exec (bytecode, module. dict ) Fichier "site-packages\tensorflow\python__init __. py", ligne 49, dans Fichier "c :\users\aleks\appdata\local\programmes\python\python36\lib\site-packages\PyInstaller\loader\pyimod03_importers.py ", ligne 631, dans exec_module exec (bytecode, module. dict ) Fichier "site-packages\tensorflow\python\pywrap_tensorflow.py", ligne 74, dans ImportError: Traceback (l'appel le plus récent en dernier): Fichier " sites-packages\tensorflow\python\pywrap_tensorflow.py ", ligne 58, dans Fichier" c:\utilisateurs\aleks\appdata\local\programmes\python\python36\lib\site-packages\PyInstaller\loader\pyimod03_importers.py ", ligne 631, dans exec_module exec (bytecode, module. dict ) Fichier" sites-packages\tensorflow\python\pywrap_tensorflow_internal.py ", ligne 18, dans Fichier "sites-packages\tensorflow\python\pywrap_tensorflow_internal.py", ligne 17, dans swig_import_helper Fichier "importlib__init__.py", ligne 126, dans import_module ModuleNotFoundError: Aucun module nommé 'tensorflow.python._pywrap_tensorflow_internal'

Impossible de charger le runtime natif TensorFlow.

Voir https://www.tensorflow.org/install/sources#common_installation_problems

pour des raisons et des solutions communes. Incluez toute la trace de la pile Au-dessus de ce message d'erreur lorsque vous demandez de l'aide. [10816] Échec de l'exécution de l'interface de script.

6
Aleksk89

Assurez-vous également que vous empaquetez MSVCP140.DLL, car le fait de ne pas y trouver le% PATH% peut générer cette erreur. 

J'ai tendance à utiliser cx_Freeze au lieu de pyinstaller lors de la distribution d'applications tensorflow. Une fois que vous avez surmonté l’erreur cx_Freeze avec scipy, c’est plus simple.

2
Joska

J'ai résolu ce problème en créant des répertoires comme suit: ".../dist/[MmyPyName] /tensorflow/python/_pywrap_tensorflow_internal.pyd"

  • tensorflow-gpu = 1.10.0 
  • python = 3.6.2 
  • cuda = 9.0 
  • cudnn = 7.3.0
1
Bill

Peut-être que ceci peut aider. Je renomme manuellement le fichier _pywrap_tensorflow_internal.pyd en tensorflow.python._pywrap_tensorflow_internal.pyd dans le dossier dist. Tout fonctionne. 

0
Y Song