【问题标题】:Pyinstaller No module named msvcPyinstaller 没有名为 msvc 的模块
【发布时间】:2019-11-18 04:41:29
【问题描述】:

我在 Ubuntu 上使用 Pyinstaller 为我的 Python 代码创建二进制可执行文件。这段代码有一堆文件和依赖项。其中之一是tensorflow。可执行文件已正确创建,但当我尝试运行它时,出现以下错误:

Traceback (most recent call last):
  File "detection_init.py", line 14, in <module>
    import lib.tensorboxDetector as tensorboxDetector
  File "/tmp/pip-build-EuLWEf/pyinstaller/PyInstaller/loader/pyimod03_importers.py", line 389, in load_module
  File "lib/tensorboxDetector.py", line 20, in <module>
    import tensorflow as tf
  File "/tmp/pip-build-EuLWEf/pyinstaller/PyInstaller/loader/pyimod03_importers.py", line 389, in load_module
  File "tensorflow/__init__.py", line 24, in <module>
  File "/tmp/pip-build-EuLWEf/pyinstaller/PyInstaller/loader/pyimod03_importers.py", line 389, in load_module
  File "tensorflow/python/__init__.py", line 104, in <module>
  File "/tmp/pip-build-EuLWEf/pyinstaller/PyInstaller/loader/pyimod03_importers.py", line 389, in load_module
  File "tensorflow/python/platform/test.py", line 57, in <module>
  File "/tmp/pip-build-EuLWEf/pyinstaller/PyInstaller/loader/pyimod03_importers.py", line 389, in load_module
  File "mock/__init__.py", line 2, in <module>
  File "/tmp/pip-build-EuLWEf/pyinstaller/PyInstaller/loader/pyimod03_importers.py", line 389, in load_module
  File "mock/mock.py", line 71, in <module>
  File "pbr/version.py", line 461, in semantic_version
  File "pbr/version.py", line 447, in _get_version_from_pkg_resources
  File "/tmp/pip-build-EuLWEf/pyinstaller/PyInstaller/loader/pyimod03_importers.py", line 389, in load_module
  File "pbr/packaging.py", line 32, in <module>
  File "/tmp/pip-build-EuLWEf/pyinstaller/PyInstaller/loader/pyimod03_importers.py", line 389, in load_module
  File "setuptools/__init__.py", line 160, in <module>
  File "setuptools/monkey.py", line 104, in patch_all
  File "setuptools/monkey.py", line 156, in patch_for_msvc_specialized_compiler
  File "importlib/__init__.py", line 37, in import_module
ImportError: No module named msvc

如何解决此错误并正确运行文件?

【问题讨论】:

    标签: python pyinstaller


    【解决方案1】:

    使用开发版的 Pyinstaller 解决了这个问题。更多细节在这里:https://github.com/pyinstaller/pyinstaller/issues/2824

    【讨论】:

      【解决方案2】:

      我在隐藏的导入中添加了msvc。我仍在与进口作斗争,但似乎已经过去了。

      {
          a = Analysis(['/Users/Ben/Documents/DeepMeerkat/DeepMeerkat/main.py'],
                       pathex=['/Users/ben/Documents/DeepMeerkat/DeepMeerkat/'],
                       binaries=[],
                       datas=[],
                       hiddenimports=['setuptools.msvc'],
                       hookspath=[],
                       runtime_hooks=[],
                       excludes=[ 'enchant', 'twisted'],
                       win_no_prefer_redirects=False,
                       win_private_assemblies=False,
                       cipher=block_cipher)
      }
      

      【讨论】:

      • 您可以尝试使用开发版。它为我解决了问题。
      • 所以,git clone dev 分支和 python setup.py install
      • 直接用pippip install -e https://github.com/pyinstaller/pyinstaller/archive/develop.zip安装