Pyinstaller不会在Python虚拟环境中查找文件

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (466)

我想将Python代码转换为独立的可执行文件,代码使用numpy,scipy和Pymc3模块。我使用的是Python 3.6.4。我在Pycharm IDE中使用虚拟环境创建了项目。我用来运行pyinstaller的命令如下:

venv/Scripts/pyinstaller --onefile src/POD.py

venv是存储虚拟环境的文件夹,src是我的Python源代码所在的文件夹。POD.py已保存。Pyinstaller运行很好生成一些警告消息,但是当我尝试运行pyinstaller生成的可执行文件时,它会抛出错误

   Traceback (most recent call last):
  File "POD.py", line 196, in <module>
  File "POD.py", line 79, in train
  File "Lib\site-packages\theano\tensor\var.py", line 155, in __mul__
  File "Lib\site-packages\theano\gof\op.py", line 615, in __call__
  File "Lib\site-packages\theano\tensor\elemwise.py", line 482, in make_node
  File "Lib\site-packages\theano\tensor\elemwise.py", line 438, in      get_output_info
  File "Lib\site-packages\theano\tensor\elemwise.py", line 157, in __init__
  File "Lib\site-packages\theano\gof\op.py", line 1308, in __init__
  File "Lib\site-packages\theano\gof\op.py", line 1331, in load_c_code
FileNotFoundError: [Errno 2] No such file or directory: 'C:\\Users\\User\\AppData\\Local\\Temp\\_MEI126642\\theano\\tensor\\c_code\\dimshuffle.c'
[4756] Failed to execute script POD

好像它试图在虚拟环境之外找到文件dimshuffle.c。实际上,我可以看到虚拟环境中有一个文件夹,里面有dim_shuffle.c代码。我可以在以下文件夹中的虚拟环境中找到它。

venv/Lib/site-packages/theano/tensor/c_code/dimshuffle,c

我的问题是如何指示pyinstaller在虚拟环境文件夹中查找dimshuffle?

提问于
用户回答回答于
用户回答回答于

您可以通过编辑spec文件来扩展sys.path。

 pyi-makespec --paths = / path / to / thisdir \
             --paths = / path / to / otherdir myscript.py 

  1. 使用spec文件列出隐藏的导入。

有关更多信息,请参阅

所属标签

可能回答问题的人

  • 嗨喽你好

    7 粉丝480 提问9 回答
  • uncle_light

    5 粉丝518 提问8 回答
  • 富有想象力的人

    3 粉丝0 提问7 回答
  • 无聊至极

    4 粉丝504 提问6 回答

扫码关注云+社区

领取腾讯云代金券