【问题标题】:Error after compiling Python NetworKit script to static binary将 Python NetworKit 脚本编译为静态二进制文件后出错
【发布时间】:2020-04-08 14:34:13
【问题描述】:

我正在使用 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 构建静态二进制文件的经验,因此我们将不胜感激。

【问题讨论】:

    标签: python compilation pyinstaller networkit


    【解决方案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
    

    从那里开始,按照安装指南中的说明从源代码构建。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-09-02
      • 1970-01-01
      • 1970-01-01
      • 2010-12-05
      相关资源
      最近更新 更多