【问题标题】:Python SSL Import Error in PyInstaller generated executablePyInstaller 生成的可执行文件中的 Python SSL 导入错误
【发布时间】:2019-12-06 18:31:45
【问题描述】:

我正在尝试分发我创建的 Python 程序的可执行文件。 为此,我使用PyInstaller

我使用带有 Python 3.7 的 Windows 7 Professional 程序在 PyCharm 中成功运行并产生预期结果。

如 PyInstaller 手册中所述,我创建了 dist 文件夹:

pyinstaller main.py

日志输出表明进程成功完成。

尝试从分发文件夹运行main.exe 时,会产生以下错误:

Traceback (most recent call last):
  File "site-packages\PyInstaller\loader\rthooks\pyi_rth_certifi.py", line 11, i
n <module>
  File "c:\users\tim\anaconda3\envs\timtf2_37\lib\site-packages\PyInstaller\load
er\pyimod03_importers.py", line 627, in exec_module
    exec(bytecode, module.__dict__)
  File "ssl.py", line 98, in <module>
ImportError: DLL load failed: The specified procedure could not be found.
[6236] Failed to execute script pyi_rth_certifi

【问题讨论】:

  • 你能在 ssl.py 脚本中分享你所有的导入包名称吗
  • @shubham,我在分发文件夹中没有看到ssl.py 文件,只有一个_ssl.pyd
  • 你能告诉我你导入main.py的包是什么
  • 我使用:sqlalchemy, pandas, datetime, smtplib
  • 使用pyinstaller 3.4,我想它可能对你有帮助

标签: python pyinstaller


【解决方案1】:

所以几个小时后,我设法解决了这个问题。 我做了几件事,但仍然不确定实际的修复是什么,但这是我完成的分步流程:

  1. 使用 Anaconda 创建了一个新环境。我已将 Python 版本降级为 3.6.8,因为我看到有人提到 Python 3.7 存在一些兼容性问题
  2. 使用 Anaconda 安装了我项目中的所有要求,因为有些人提到了由于混合使用 pipconda 而导致的问题。
  3. 安装了最新版本的pyinstaller
  4. 激活新环境并在其中使用--hidden-import pyodbc 参数在程序的main.py 脚本上运行pyinstaller

就是这样,现在分布式程序可以在办公室的所有 Windows 计算机上运行。

【讨论】:

  • 谢谢,我用3.7.4也有同样的问题,用3.6.10解决了,还有一个意外的惊喜,用3.7.4生成的exe大小是80+MB,但是用30+MB 3.6.10
猜你喜欢
  • 2019-08-02
  • 2019-01-21
  • 1970-01-01
  • 2014-01-04
  • 1970-01-01
  • 1970-01-01
  • 2019-10-12
  • 2021-07-27
  • 2019-12-19
相关资源
最近更新 更多