0

我正在尝试使用 nuitka 编译一个包含 numpy 和 pandas 的 python 项目,但无论我如何编译它,在启动最终可执行文件时都会出错。对于编译,我使用下一个命令:

python -m nuitka --standalone --follow-imports --plugin-enable=numpy --include-plugin-directory=.venv/lib/python3.6/site-packages/pandas --include-plugin-directory=.venv/lib/python3.6/site-packages/numpy --show-progress --show-scons newick2phylipmatrix.py

但是当我尝试启动编译生成的可执行文件时,我收到以下消息:

Traceback (most recent call last):
  File "/home/mindsound/sandbox/distMatrix/newick2phylipmatrix.dist/newick2phylipmatrix.py", line 6, in <module>
  File "<frozen importlib._bootstrap>", line 971, in _find_and_load
  File "<frozen importlib._bootstrap>", line 955, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 656, in _load_unlocked
  File "<frozen importlib._bootstrap>", line 626, in _load_backward_compatible
  File "/home/mindsound/sandbox/distMatrix/newick2phylipmatrix.dist/pandas/__init__.py", line 22, in <module pandas>
  File "<frozen importlib._bootstrap>", line 971, in _find_and_load
  File "<frozen importlib._bootstrap>", line 955, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 656, in _load_unlocked
  File "<frozen importlib._bootstrap>", line 626, in _load_backward_compatible
  File "/home/mindsound/sandbox/distMatrix/newick2phylipmatrix.dist/pandas/compat/numpy/__init__.py", line 3, in <module pandas.compat.numpy>
  File "<frozen importlib._bootstrap>", line 971, in _find_and_load
  File "<frozen importlib._bootstrap>", line 955, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 656, in _load_unlocked
  File "<frozen importlib._bootstrap>", line 626, in _load_backward_compatible
  File "/home/mindsound/sandbox/distMatrix/newick2phylipmatrix.dist/distutils/__init__.py", line 11, in <module>
AttributeError: module 'opcode' has no attribute '__file__'

目前没有对代码进行任何更改,我设法用 pyinstaller 创建了一个独立的,但我不能用 nuitka 做到这一点,但如果可能的话,我想用它来从编译优化中受益。

你知道这个问题来自哪里以及是否可以解决吗?

4

1 回答 1

0

好吧,我终于得到了相同的解决方案。创建时由 virtualenv 创建/复制的 distutils 与 pythons 原始发行版中的不同。Nuitka 的一位团队成员帮助我发现了同样的问题并帮助我找到了解决方案。那么我发现的选项是从 Pythons lib 文件夹中获取 distutils 并替换创建的 virtualenv 文件夹中现有的 distutils 文件夹,然后继续 - 编译相同。我坚信这个问题对你来说也会消失,因为它对我来说已经消失了。现在将寻求为我的完整项目工作找到合适的解决方案。

快乐编译:)

于 2019-10-24T12:02:37.277 回答