Python虚拟环境打包(Python虚拟环境打包)
Python虚拟环境打包
参数 --no-site-packages 的意思是创建虚拟环境时,不复制主环境中安装的第三方包,也就是创建一个 “干净的” 虚拟环境
virtualenv 还有很多参数,用于不同的使用场景,例如:
Python3.3 之后,可以用模块 venv 代替 virtualenv
在当前目录创建一个名为 myvenv 的虚拟环境
参数:
虚拟环境创建好后,需要激活才能在当前命令行中使用
退出虚拟环境很简单,只需要执行 deactivate 命令就行
一般部署流程是:
deactivate
pyenv下python依赖的路径和打包项目
一个很好用的打包工具:pyinstaller
很简单,cd到目标项目的.py目录下,运行 pyinstaller -F file.py -F:表示只生成一个可执行文件,如果不加则会在dist文件夹下生成很多文件和一个可执行文件。
successfully之后,当前目录下会生成两个文件夹,一个dist,一个build,我们所需要的文件在dist里面。
直接运行就可以了
为啥不用这个方法呢,因为在python的包中,有的完全是python的, 而有的并不是纯python的 ,那么接下来介绍方法二,如何安全的提取打包。
我是从pycharm中找到了蛛丝马迹
现在全都找到了,如果你可以打开.py文件,那么路径更好找,直接cd过去就ok了:
回到之前我们的疑问: 怎么判断安装包是不是纯python的呢?
这里面的.so文件就不是python的文件,.py/.pyc是。所以这种包无法打包,只能到目标环境下手动安装。
找到我们需要的包,cp出去放到 sys.path 可以找到的路径下就可以了(放到你要run的那个文件夹里),结果如下:
重新创建一个虚拟环境,运行下export.py查看能否正常运行就ok了。
使用PyInstaller打包Python程序
PyInstaller是一个用来将Python程序打包成独立可执行软件的工具,支持 Windows、Linux 和 Mac OS X。生成的可执行软件在没有Python的环境中可以直接运行,方便软件分发,进一步降低使用成本,提升使用效率。
下面演示如何使用 PyInstaller 将程序打包成Windows下的exe软件。
使用pip的方式进行安装,这样可以自动安装其他依赖库。
如果pip还未安装,请参考我的另一篇文章《 Python pip包管理工具 》
在cmd命令行控制台或者VS Code内置的终端输入命令行生成应用,首先将当前路径切换到Python程序所在的路径(如下示例的SubOcr.py文件在python文件夹下的SubOcr文件夹内),然后输入生成应用的命令。
命令执行成功后在 I:\work\python\SubOcr\dist 文件夹下生成了SubOcr文件夹,里面包含了SubOcr.exe文件。整个SubOcr文件夹就是一个绿色软件,随便移动到任何位置都可运行。
实际上在用pyinstaller命令时会在Python程序的所在路径生成一个后缀为spec的同名文件,然后根据此文件的配置生成应用,这就是PyInstaller的原理。这样做的好处是spec保存了生成应用的配置,每次重新生成应用时可以省略指定参数,尤其是指定了其他的资源、程序库时。我们可以通过以下命令先生成spec文件。
pyi-makespec的命令参数跟pyinstaller的相同,在生成spec文件后可以对其部分选项进行编辑(可以用VS Code或自带的记事本编辑),添加更多参数,然后再用pyinstaller命令生成应用。
spec文件的主要选项:
上面示例的SubOcr用到了opencc和opencv-python,其中opencc下的数据文件和opencv-python下的dll文件在生成应用时不会自动导入(缺少这些文件应用无法正常使用),因此需要在spec文件中指定路径。对spec文件的修改如下:
以上便是PyInstaller打包Python程序的全过程,如果在此过程中遇到问题,可以在评论区留言,定当知无不言,言无不尽。
python打包成exe文件运行需要配置相同环境吗
需要的。
打包完成之后,如果还需要用这个虚拟环境打包同一个项目,就可以保留了。如果不需要这个虚拟环境的话,conda env list activate 你之前的虚拟环境名称 delete -n 要删除的虚拟环境名称 --all
就OK了。