Ошибка после компиляции скрипта 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

С этого момента выполняйте сборку из исходного кода, как описано в их руководстве по установке.

Другие вопросы по тегам