【问题标题】:Python to executable - unable to import modulesPython到可执行文件 - 无法导入模块
【发布时间】:2015-11-02 08:31:04
【问题描述】:

在 Win10 x64 上运行 Python 3.5。尝试过 py2exe、PyInstaller 和 cxfreeze。它们都运行并生成一个.exe。但是所有 .exe 文件都不会在出现错误后立即关闭。它们都有警告日志,其中包含大量无法正确导入的必需模块列表。

PyInstaller:

missing module named time.time - imported by time, http.cookies
...
missing module named urllib.proxy_bypass - imported by urllib, requests.compat 
...

cxfreeze:

Missing modules:

    ? Cookie imported from requests.compat
    ? Image imported from openpyxl.drawing.image
    ? OpenSSL.SSL imported from requests.packages.urllib3.contrib.pyopenssl
    ? StringIO imported from requests.compat, requests.packages.urllib3.packages.six
    ...

PyInstaller 还会引发依赖错误,例如缺少“api-ms-win-crt-runtime-l1-1-0.dll”。我已经安装了 Visual C++ 2005-2015,还安装了 Visual Studio Community 15。

【问题讨论】:

  • 我对 py2exe 有一些经验。你能告诉我你遇到了什么错误吗?
  • @CrakC 我认为对于 py2exe,它不支持 python 3.5,因为它一直试图打开 3.4 版本的文件。此外,在安装时(不是通过 pip),它要求我指向我的 python 3.4 目录并在找不到时退出
  • 另外,Win10是一个新的操作系统,在这种情况下兼容性问题非常明显。从 3.5 迁移到 3.4 有问题吗?
  • FileNotFoundError: [Errno 2] No such file or directory: '...Python\\Python35\\lib\\site-packages\\py2exe\\run-py3.5-win-amd64.exe' 这是具体的错误。在那个位置,只有一个 run-py3.4 存在
  • @CrakC 我不知道迁移到 3.4 是否有问题 - 可能是什么问题?

标签: python exe


【解决方案1】:
PyInstaller 3.0  Python 3.5 on Win10 x64 with Visual Studio Community 15 
works for me. I run pyinstaller --onefile file_script.py
    in windows path i have the folowing
    C:\Python35;
    C:\Python35\Scripts;
    C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin;

【讨论】:

  • 我立即注意到我没有将 Python 安装到 C 根目录(我喜欢保持干净!),你认为这可能会导致问题,脚本试图查找相对于他们在哪里?
  • @Prof,是的,很可能就是这样。
  • 您知道更改安装目录的无痛方法吗?我认为卸载和重新安装会丢失我所有的自定义模块?
  • @Prof 您可以随时移动 python 文件夹,但您需要在系统属性中更新 windows PATH。
  • 移动和更改 PATH 后仍然出现相同的错误。澄清一下,我正在做的是打开命令行并输入:python -m PyInstaller --onefile 123.py
【解决方案2】:

原来这是 openpyxl 的问题,它是一个正在导入的模块。

https://bitbucket.org/openpyxl/openpyxl/issues/498/moving-constants-to-a-configuration-file https://bitbucket.org/openpyxl/openpyxl/pull-requests/67/include-constantsjson-as-part-of-the/diff https://bitbucket.org/openpyxl/openpyxl/pull-requests/83/use-__about__py-instead-of-constantsjson/diff

下载存储库的副本,使用在最后一个 URL 中所做的更改,然后从该 URL 安装 openpyxl(使用 `pip install -e (openpyxldirectory) 允许生成工作 .exe

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-12
    • 1970-01-01
    • 1970-01-01
    • 2013-08-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多