赞
踩
nuitka与虚拟环境(virtualenv)
虚拟环境与普通环境的不用在于搜索路径的不同,也就是代码运行时,sys.path中所包含的路径不一样,关于搜索路径的设置charstale:自定义模块搜索路径zhuanlan.zhihu.com
对于一般环境下面的python代码,使用下面命令打包就能正常运行
nuitka --recurse-all --output-dir=out xxxx.py
如果代码中引用了虚拟环境中的模块,并运行使用上述命令打包exe,运行时候会提示找不到模块(no module named xxx)
解决方法是设置模块搜索路径,一共四种方法,这四种方法对其他找不到模块的情况也适用
A:设定环境变量pythonpath
使用nuitka打包exe之前,在终端中使用如下命令设定设定环境变量pythonpath(可以使用相对路径)指向虚拟环境的site-packages文件夹
set pythonpath=venv\Lib\site-packages
打包过程中,nuitka会在所有模块搜索路径中寻找要用到的包。因为使用了--recurse-all 参数,如果是py或者pyc格式,就会打包进exe,如果是pyd格式(以及可能会用到的dll文件),则需要手动复制到exe同级目录,或者复制到其他模块搜索路径中。
B:使用压缩文件python38.zip
将虚拟环境中的site-packages文件夹中的所有文件,压缩为python38.zip(文件名以python版本为准),放到exe同级目录
zip文件目录结构
p
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。