当前位置:   article > 正文

virtualenv创建虚拟环境进行封装exe_linux python venv 虚拟环境打包成exe

linux python venv 虚拟环境打包成exe

一、安装virtualenv库

pip install virtualenv

二、cmd命令行进到要创建虚拟环境的文件夹

 

三、创建虚拟环境

e:\venv> virtualenv my_project # 在venv文件夹中创建一个虚拟环境

四、激活虚拟环境

  1. # windows环境
  2. my_project\scripts\activate
  3. # mac、Linux环境
  4. source my_project_env/bin/activate

 

五、将py文件放到venv文件夹下

六、安装Python库

在venv文件夹下或虚拟环境文件夹下进行pip安装

  1. # 将需要的库导入到txt文件
  2. 方式一:
  3. pip freeze > requirements.txt # 有可能把不需要的包也导出
  4. 方式二:
  5. pip install pipreqs
  6. pipreqs ./ --encoding=utf8
  7. # 在虚拟环境中安装需要的Python库
  8. pip install -r requirements.txt

七、使用pyinstaller打包

安装:pip install pyinstaller -i https://pypi.tuna.tsinghua.edu.cn/simple/

pyinstaller 最重要的两个参数就是 -F 与 -D 参数。

使用 - F 参数, pyinstaller 会将 python 程序打包成单个可执行文件。

使用 - D 参数, pyinstaller 会将 python 程序打包成一个文件夹,运行程序时,需要进入该文件夹,点击运行相应的可执行程序。

简单总结一下:

-F:打包 Python 程序为单个可执行文件

-D:打包 Python 程序为一个文件夹

-i:生成图标,只适用于 Windows 平台

-n:指定打包后生成文件的名称

-w:禁止命令行弹出

  1. # 将要打包的代码放在venv或虚拟环境文件夹下进行打包
  2. pyinstaller -F -w main.py

pyinstaller打包过程中报错处理:

1. ImportError: DLL load failed while importing win32api: 找不到指定的程序。

环境python3.8.10。解决办法:

方式1:将虚拟环境的scripts添加到环境变量中

方式2:将代码放到虚拟环境的scripts文件夹中,在scripts中封装。

2. Pyinstaller打包含有sklearn库报错,缺少模块

解决办法:在生成的spec文件中,hiddlemodule添加缺少的模块,重新打包pyinstaller xx.spec

3. Pyinstaller打包后,正常运行,但执行某个功能时闪退

往往是由于打包时缺少某个库造成的,比如用pandas读取xls文件,由于没有安装xlrd库,闪退。

解决办法:打包为console或debug模式,查看错误信息【推荐console模式,不推荐debug模式】 console模式举例:
pyinstaller -c demo.py
debug模式举例:
pyinstaller -d all demo.py
然后进入dist文件夹中,将demo.exe拖到命令行窗口(cmd或anaconda Prompt)执行即可,很容易发现出错提示。

pyinstaller踩坑记,缺少依赖、打包错误或运行无效排查过程备忘 - 知乎 (zhihu.com)

4. 打包flask web项目

由于flask web项目需要依赖静态资源,打包时需要进行指定 。

首先,生成*.spec文件

pyi-makespec app.py

 其次,修改spec文件中的datas,指定静态资源相对路径

  1. # 修改Analysis中的datas
  2. datas=[('app\\static','app\\static'),('./app/templates','./app/templates')],
  3. # 为了运行exe时有提示,修改EXE中的console
  4. console=True,
'
运行

最后,使用pyinstaller命令打包

pyinstaller -F app.py # 不加-w,以便打包后运行exe时有提示窗口

 八、停用、删除虚拟环境

  1. # 停用虚拟环境
  2. deactivate
  3. # 删除虚拟环境
  4. rmvirtualenv my_project

九、virtualenv其他命令

  1. cdvirtualenv #导航到当前激活的虚拟环境的目录中,比如说这样您就能够浏览它的 site-packages。
  2. cdsitepackages # 和上面的类似,但是是直接进入到 site-packages 目录中。
  3. lssitepackages #显示 site-packages 目录中的内容。
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/863642?site
推荐阅读
相关标签
  

闽ICP备14008679号