将Python NetworKit脚本编译为静态二进制文件后出错



我使用pyinstaller和staticcx将Python3.6脚本编译为静态二进制文件。我已经在虚拟环境(venv(中通过pip安装了所有软件包。

在我尝试将行import networkit as nk添加到脚本顶部之前,一切都很好。编译仍然有效,但一旦我运行了未更改的文件,我就会得到以下错误:

File "StrategicSolver.py", line 15, in <module>
import networkit as nk
File "<my_path>/strat_solver_env/lib/python3.6/site-packages/PyInstaller/loader/pyimod03_importers.py", line 623, in exec_module
exec(bytecode, module.__dict__)
File "networkit/__init__.py", line 50, in <module>
File "<my_path>/strat_solver_env/lib/python3.6/site-packages/PyInstaller/loader/pyimod03_importers.py", line 623, in exec_module
exec(bytecode, module.__dict__)
File "networkit/graph.py", line 2, in <module>
File "networkit/_NetworKit.pyx", line 6, in init networkit._NetworKit
ModuleNotFoundError: No module named 'networkit.exceptions'
[19811] Failed to execute script StrategicSolver

模块"networkit.exceptions"应该在那里(我也尝试过通过python3 setup.py install从源代码安装包(,所以我不确定发生了什么。我没有太多从Python构建静态二进制文件的经验,所以如果有任何帮助,我将不胜感激。

我能够通过克隆存储库并注释掉_NetworKit.pyx中依赖于"NetworKit.exceptions"的任何一行来找到一个临时解决方案(见下文(。

# from networkit.exceptions import ReducedFunctionalityWarning
.
.
.
try:
import pandas
except:
# warnings.warn("WARNING: module 'pandas' not found, some functionality will be restricted",
#       ReducedFunctionalityWarning)
pass

从那时起,按照安装指南中的说明从源代码进行构建。