You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Linux下PyInstaller单文件编译运行报错及解决记录

Linux下PyInstaller编译单文件Python程序的库加载问题及解决

问题背景

在Linux环境中使用PyInstaller编译单文件Python程序时,编译过程成功,但运行生成的可执行文件时出现库加载失败的问题,该问题在更新依赖库后出现。

编译脚本

PYTHONOPTIMIZE=1 pyinstaller --clean \
--log-level DEBUG --noconfirm --onefile --nowindow \
--hidden-import=pkg_resources.py2_warn \
--add-data="sym/GesPomVuo18016.map:sym/" \
main_periodica.py \
--version-file ver/file_version_info.txt

依赖库版本列表

Package                   Version
------------------------- -----------
altgraph                  0.17.4
certifi                   2025.6.15
charset-normalizer        3.4.2
digimat.jobs              0.1.6
digimat.saia              0.1.71
future                    1.0.0
idna                      3.10
ipaddress                 1.0.23
lxml                      5.4.0
mysql-connector           2.2.9
netifaces                 0.11.0
numpy                     2.3.1
opcua                     0.98.13
packaging                 25.0
pip                       25.1.1
prettytable               3.16.0
PTable                    0.9.2
pyinstaller               6.14.1
pyinstaller-hooks-contrib 2025.5
pyModbusTCP               0.3.0
python-dateutil           2.9.0.post0
pytz                      2025.2
requests                  2.32.4
setuptools                80.9.0
six                       1.17.0
Unidecode                 1.4.0
urllib3                   2.5.0
wcwidth                   0.2.13
wheel                     0.46.1

运行时错误信息

第一个错误

Traceback (most recent call last):
  File "main_periodica.py", line 6, in <module>
  File "PyInstaller/loader/pyimod02_importers.py", line 450, in exec_module
  File "numpy/distutils/__init__.py", line 26, in <module>
ImportError: cannot import name 'ccompiler' from partially initialized module 'numpy.distutils' (most likely due to a circular import) (/tmp/_MEI0fHg0B/numpy/distutils/__init__.pyc)
[PYI-40669:ERROR] Failed to execute script 'main_periodica' due to unhandled exception!

第二个错误

Traceback (most recent call last):
  File "main_periodica.py", line 44, in <module>
  File "<frozen importlib._bootstrap>", line 1007, in _find_and_load
  File "<frozen importlib._bootstrap>", line 986, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 680, in _load_unlocked
  File "PyInstaller/loader/pyimod02_importers.py", line 419, in exec_module
  File "requests/__init__.py", line 164, in <module>
  File "<frozen importlib._bootstrap>", line 1007, in _find_and_load
  File "<frozen importlib._bootstrap>", line 986, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 680, in _load_unlocked
  File "PyInstaller/loader/pyimod02_importers.py", line 419, in exec_module
  File "requests/api.py", line 11, in <module>
  File "<frozen importlib._bootstrap>", line 1007, in _find_and_load
  File "<frozen importlib._bootstrap>", line 986, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 680, in _load_unlocked
  File "PyInstaller/loader/pyimod02_importers.py", line 419, in exec_module
  File "requests/sessions.py", line 15, in <module>
  File "<frozen importlib._bootstrap>", line 1007, in _find_and_load
  File "<frozen importlib._bootstrap>", line 986, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 680, in _load_unlocked
  File "PyInstaller/loader/pyimod02_importers.py", line 419, in exec_module
  File "requests/adapters.py", line 81, in <module>
FileNotFoundError: [Errno 2] No such file or directory
[64646] Failed to execute script 'main_periodica' due to unhandled exception!

尝试的解决方法

尝试创建__init__.py文件,未解决问题。

最终解决方案

新建Python虚拟环境,重新安装更新后的所有依赖包,问题得以解决。推测原因为依赖库版本冲突。

内容的提问来源于stack exchange,提问作者Graziano Giacobazzi

火山引擎 最新活动