Ошибка после компиляции скрипта Python NetworKit в статический двоичный файл
Я использую pyinstaller и staticx для компиляции скрипта Python3.6 в статический двоичный файл. Я установил все пакеты через pip в виртуальной среде (venv).
Все работает нормально, пока не попробую добавить строчку 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, поэтому я буду благодарен за любую помощь.
1 ответ
Мне удалось найти временный обходной путь, клонировав репозиторий и закомментировав любую строку в _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
С этого момента выполняйте сборку из исходного кода, как описано в их руководстве по установке.