一、虚拟环境
(一)创建普通虚拟环境
1.使用命令提示符窗口创建虚拟环境
说明:本操作是自己实际操作的步骤并总结出来的笔记
(1)找到创建虚拟环境的文件路径目录,输入cmd并回车。非C盘中的路径,同样可以创建虚拟环境,本例采用的就是D:/bai这个路径作为创建虚拟环境的文件。
(2)在命令提示符窗口中输入命令:python -m venv Data_python3.9,按回车
(3)命令提示符窗口状态如下,并且创建虚拟环境中文件夹中多了一个名Data_python3.9的虚拟环境文件夹,即虚拟环境创建好了。
(4)打开虚拟环境文件中的Scripts,并输入cmd
(5)输入命令:activate.bat并按回车,即可激活该虚拟环境,此处的activate,bat同文件夹中activate.bat文件
(6)括号中出现虚拟环境的名称,表明该虚拟环境已经被激活,可以进行安装第三方库或者配置在pycharm中。
2.使用pycharm创建普通python虚拟环境
(1)打开PyCharm,在菜单File中打开NewProject,弹出下图。
(2)选中下图中的选项New environment using Virtualenv,此功能即为创建虚拟环境的功能。下面的选项Previously configured interpreter为使用Python软件配置好的解释器,即系统环境。
(3)在左上角第一个Location中选择创建python文件的路径后,则在虚拟环境路径位置Location中,会在python文件路径后加一个venv。但是,有时创建时,并不一定python文件路径后,虚拟环境路径并不会按一述规律自动生成,此时需要手动添加一个venv。
(4)点击Creat,即可创建一个Python项目并创建属于该项目的独立的虚拟环境。生成的虚拟环境文件在设置的虚拟环境路径中,如下图所示:
简要总结使用PyCharm创建虚拟环境的方法:创建python文件时选中New environment using Virtualenv选项,设置好python文件路径及虚拟环境路径,直接点击Creat即可完成创建虚拟环境。
以上笔记来源:阿里云盘分享
(二)创建anaconda虚拟环境(推荐)
1.使用PyCharm创建conda虚拟环境(类似pycharm创建普通虚拟环境)
2.使用Anaconda Powershell Prompt创建虚拟环境
(1)创建conda虚拟环境的步骤
第1步:找到anaconda控制台并打开
第2步:打开后的anaconda控制台的样子
第3步:conda创建虚拟环境的命令 conda create –n py39 python=3.9
其他中py39是虚拟环境文件夹的名称,python=3.9是创建虚拟环境使用的python版本号
第4步:conda激活虚拟环境的命令 conda activate py39,其中py39是虚拟环境文件夹的名称。
(2)conda虚拟环境的命令总结
安装虚拟环境命令
conda create -n CT8 python=3.9
其中:
-n CT8 为虚拟环境名称,建议采用格式:虚拟环境名称_python版本号,如CT8_python3.9,这样一眼就可以看出自己创建的虚拟环境,使用哪个版本python解释器创建的。
python=3.9 指定创建虚拟环境的python版本,使用创建conda虚拟环境时,切记一定要指定python版本,否则,无法创建conda虚拟环境文件夹中内容不完整,导致无法使用。
激活虚拟环境
conda activate CT8
其中, -n CT8 为虚拟环境名称
查看已有的虚拟环境
conda info --envs
删除虚拟环境
conda env remove -n CT
查看虚拟环境中的python版本号
退出查看python版本号并切换至虚拟环境命令行
学习资料来源:
学习资料一:
https://www.bilibili.com/video/BV16i4y1v7tb?vd_source=4786f682d55e0415f381ab2f415da999
学习资料二:
https://www.bilibili.com/video/BV1gU421Z7K7?vd_source=4786f682d55e0415f381ab2f415da999
3.在pycharm中配置conda虚拟环境
(1)在已有项目中配置conda虚拟环境
第1步:打开pycharm,打开“文件”菜单中“设置”菜单项,弹出“设置”窗口,点击右上角的“添加解释器”选项卡,并点击“添加本地解释器”。
第2步:点击“设置”窗口右上角的添加解释器选项卡
第3步:在弹出的路径选择对话框中,选择虚拟环境文件夹中python.exe文件并点击确定。
第4步:在弹出的下方对话框中,点击确定
第5步:在弹出的下方对话框中,先点应用再点击确定。
第6步:验证pycharm是否配置成功conda虚拟环境
(2)创建新项目时配置conda虚拟环境
第1步:打开“文件”菜单,点开“新建项目”菜单项。
第2步:上一步创建并选择的新文件夹,出现在位置后面的路径中,勾选下方“先前配置的解释器”,点击点下角的添加解释器,并选择“添加本地解释器”。
第3步:选择解释器的操作同“在已有项目中配置conda虚拟环境”相关操作,选择完成解释器后,点击右下角的创建按钮。
第4步:在弹出的打开项目对话框中,选择“新窗口”。
第5步:conda环境在pycharm中配置完成。
二、安装第三方包
(一)在pycharm中安装第三方包(推荐)
(二)在windows命令提示符窗口中安装第三包
1.进入虚拟环境文件中的Scripts文件中
2.在上述文件路径中输入cmd。
3.回车后显示以下窗口
4.输入activate.bat,显示以下内容
(三)安装第三方包的pip命令大全
1.pip安装第三方库
(1)直接安装
pip install 包名,如:
pip install requests
(2)镜像安装
pip install 库名 –i 源地址,如:
pip intall requests -i https://pypi.tuna.tsinghua.edu.cn/simple
但是清华源官网给出的安装第方库的方法是:
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple some-package(库名)
(3)使用清华源安装指定版本号的第三方库
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple some-package(库名)==版本号
经验:打包高版本有第三库有时,未必会支持低版本库中写的代码。如在开发易1.0版本时,用pandas1.4.4版本写的程序,打包时安装的2.2.2版本的pandas,不支持下面语句中的encoding参数。因此,用什么版本的第三包写的程序,创建虚拟环境时,仍然安装该版本的第三库非常关键。
df.to_excel(setSavePath + '/楼层设置.xlsx', encoding='utf_8_sig')
解决使用第三方包显示红线的方法:使用pycharm创建虚拟环境时,不使用ancanda中的python解释器,因为canda环境可能没有激活导致的。下午总结。
试验证明:两种镜像安装的方法均可以使用
参考资料来源(直接将网上粘贴在浏览器中可以打开):
pip安装python第三方库的四种方法_pip安装第三方库-CSDN博客
2.pip升级第三方库
pip install --upgrade package_name
3.pip卸载第三方库
pip uninstall package_name
知识点(自己发现):必须在canda环境生成的虚拟环境才可以安装pyqt5,用canda环境创建的虚拟环境可以自动提示第三方库的函数。
三、pyinstaller
1.打包icon图标
图标文件的实际路径,可以是相对路径或绝对路径
(1)相对路径:图标在当前目录下
pyinstaller -F i 21.ico temp.py
(2)绝对路径:图标文件位于其他目录,如:G:\Demo\21.ico temp.py
pyinstaller -F -i G:\Demo\21.ico -n 小白 temp.py
(3)制作ico的方法
第1步:找到需要转为ico的图片。
第2步:使用图片处理软件,如ps,可牛,将图片尺寸修剪为制作ico所需要的尺寸,比如32像素*32像素,当然也可以用制作ico网站允许的其他图片尺寸。
第3步:使用在线网站制作ico。
网站链接:在线制作ico图标 | 在线ico图标转换工具 方便制作favicon.ico - 比特虫 - Bitbug.net
2.指定exe文件名称
pyinstaller -F -i G:\Demo\21.ico -n 小白 temp.py
注意:-i 后面的图标路径同平时书写的python文件路径不同。
3.打包的py文件
py文件的位置,在别的博主的文中也称为项目程序入口。
py文件可以是相对路径,也可以绝对路径
路径的写法同icon
(1)当前目录
pyinstaller -F temp.py
(2)相对路径,x\temp.py 表示temp.py文件位于当前目录中文件夹x中
pyinstaller -F x\temp.py
(3)绝对路径
pyinstaller -F G:\Demo\temp.py
4.是否会自动打包自定义模块文件
结论:打包在项目内部自定义的模块时,打包时,不需要作任何处理,python可以自动将这些模块打包进exe文件中。
(1)拟打码的代码,py文件名称ToPack.py:
import time
from Func import func1,func2
a=func1.SQ()
b=func2.JM()
print(a,b)
for i in range(3):
print(f'{3-i}秒后程序自动退出!')
time.sleep(1)
(2)引用的两个自定义模块,来自Func文件夹下的两个模块
func1代码:
def SQ():
return 'MySql'
func2代码:
def JM():
return 'JiaMi'
(3)项目文件结构
(4)使用pyinstaller打包,命令如下:
pyinstaller -D ToPack.py
(5)双击打包后的exe文件,运行结果如下图
(6)同理打包成单文件结果依然
四、spec文件的编辑
(一)a=Analysis()
1.参数:datas
加载项目需要用到的资源文件,比如图片,视频等。列表中的数据格式为元组tuple,第1个值是资源文件所在开发人员电脑中路径(可以是绝对路径,也可以是相对路径),第2个值是打包后资源文件在的相对路径(相对exe文件的路径)。
下面的代码意思就是,把打包py文件所在目录中文件夹中所有图片,将图片打包至exe所在目录中data/image文件夹中
即
'image/*.png'是相对需要打包的py文件的相对路径
'data/image'是相对于打包后的exe文件所在的文件目录(这里指的目录是各级文件夹)
注意:
如果打包资源文件至和exe所在同一个目录,切记书写成('bai.txt','.'),即元组的第2个值不可以空,而是'.'
datas=[
('image/*.png','data/image'),
('pdf/test.pdf','data/pdf')
],
代码示例:相对路径
a = Analysis(
['T1.py'],
pathex=[],
binaries=[],
datas=[('bai.txt','.')],
hiddenimports=[],
hookspath=[],
hooksconfig={},
runtime_hooks=[],
excludes=[],
win_no_prefer_redirects=False,
win_private_assemblies=False,
cipher=block_cipher,
noarchive=False,
)
代码示例:绝对路径
a = Analysis(
['T1.py'],
pathex=[],
binaries=[],
datas=[('D:/我的文档/Desktop/林/bai.txt','.')],
hiddenimports=[],
hookspath=[],
hooksconfig={},
runtime_hooks=[],
excludes=[],
win_no_prefer_redirects=False,
win_private_assemblies=False,
cipher=block_cipher,
noarchive=False,
)
2.参数:hiddenimports
含义:报错未找到module,导入缺失模块,相当于pyinstaller中命令:
pyinstaller EC.py --hidden-import openpyxl.cell._writer
见六-2报错未找到module内容
示例:
pyinstaller -D -w -i 21.ico EC_V1.0.py --hidden-import openpyxl.cell._writer
a = Analysis(
['EC.py'],
pathex=[],
binaries=[],
datas=[],
hiddenimports=['openpyxl.cell._writer'],
hookspath=[],
hooksconfig={},
runtime_hooks=[],
excludes=[],
win_no_prefer_redirects=False,
win_private_assemblies=False,
cipher=block_cipher,
noarchive=False,
)
3.参数:excludes
排除掉不需要的库,没有尝试过此操作。
4.参数:pathex
不理解,待学习总结
5.参数:binaries
不理解,待学习总结
(二) exe = EXE()
exe = EXE(
pyz,
a.scripts,
[],
exclude_binaries=True,
name='EC_V1.0',
debug=False,
bootloader_ignore_signals=False,
strip=False,
upx=True,
console=False,
disable_windowed_traceback=False,
argv_emulation=False,
target_arch=None,
codesign_identity=None,
entitlements_file=None,
icon=['21.ico'],
)
1.参数 :name
相当下面pyinstaller命令中的参数-n
pyinstaller -D -w -i 21.ico -n 易算 EC_V1.0.py --hidden-import openpyxl.cell._writer
2.参数:icon
相当下面pyinstaller命令中的参数-i
pyinstaller -D -w -i 21.ico -n 易算 EC_V1.0.py --hidden-import openpyxl.cell._writer
五、常见打包错误及解决办法
1.未找到.dll文件
解决办法:
1.在C盘中搜索vcomp140.dll,如图所示
2.复制.dll文件至exe文件所在目录
经验:
如果电脑中找不到dll文件,可以在下面的网站下载并复制至打包后的exe文件所有的文件夹。
使用win10系统开发的易算1.0版本,在win10系统上使用pyinstaller打包后可以在win10系统上运行,但是发给朋友在win7系统中运行时,弹出来窗口提示,缺失api-ms-win-core-path-l1-1-0.dll,在自己电脑中搜索不到该文件,于是在网站在下载dll文件,放置在exe文件后,打包发送给朋友,就解决了问题,可以运行了。
Download missing DLL files for free | DLL‑files.com (dll-files.com)
2.报错未找到module
解决办法:
1复制module名称
本条错误及解决办法来源:pyinstaller打包经验分享以及一些错误解决方法~~_哔哩哔哩_bilibili
2.在pyinstaller中使用--hidden-import命令导入缺失模块
本条错误及解决办法来源:pyinstaller打包经验分享以及一些错误解决方法~~_哔哩哔哩_bilibili
3.第一打包exe时,不建议使用-w隐藏掉黑窗口
本条错误及解决办法来源:python教程|pyinstaller打包程序的流程和遇到的坑_哔哩哔哩_bilibili
4.报错lipo
本条错误及解决办法来源:python教程|pyinstaller打包程序的流程和遇到的坑_哔哩哔哩_bilibili
5.使用importlib动态导包引起的找不到模块
解决方法:使用导入隐藏模块方法解决,方法同2
本条错误及解决办法资料来源:06 打包-导入模块问题_哔哩哔哩_bilibili
六、缩小打包文件的方法
七、待研究问题
如何反编译pyinstaller 生成的exe文件
【简单演示】反编译Pyinstaller生成的EXE文件,并重新打包_哔哩哔哩_bilibili
八、关于spec的其他网站的优质资源
深入理解PyInstaller的.spec文件 (baidu.com)https://cloud.baidu.com/article/3311549
如何用pyinstaller打包python文件时将资源一起打包 – PingCodehttps://docs.pingcode.com/ask/ask-ask/175826.html
【技能Up】Python程序打包——Pyinstaller - 简书 (jianshu.com)https://www.jianshu.com/p/a62ec70b9004如何将Python版「羊了个羊」打包成exe文件_python_运行_spec (sohu.com)
https://www.sohu.com/a/734414533_121124358深入理解PyInstaller的.spec文件-百度开发者中心 (baidu.com)
https://developer.baidu.com/article/details/3311549python pyinstaller打包 pyinstaller打包spec_mob64ca14017c37的技术博客_51CTO博客
https://blog.51cto.com/u_16213621/7436363pyinstaller通过spec文件打包py程序_pyinstaller spec-CSDN博客
https://blog.csdn.net/YLF123456789000/article/details/136346198
pyinstaller spec文件详解_python_宇宙全能王-华为云开发者联盟 (csdn.net)https://huaweicloud.csdn.net/63808af0dacf622b8df8a1de.html pyinstaller 官方网站
Requirements — PyInstaller 6.9.0 documentationhttps://pyinstaller.org/en/stable/requirements.html