Python的封装是通过pyinstaller直接打包python环境下的所有第三方模块,不管是不是封装程序涉及到的模块通通都一股脑打包进来,造成封装后大小超出预计很多。
Pipenv 是一款管理虚拟环境的命令行软件,简单来讲,它可以创建一个只在某个目录下的局部 Python 环境,而这个环境是可以和全局环境脱离开的.
安装方式:
>pip install pipenv Python常用的安装第三方模块方法
安装完成后,选择一个目录,比如E:\ENV\等,然后在该目录下进入命令终端,安装python版本
>pipenv install --python 3.6 笔者这里装的是3.6版本,显示如下即安装成功
Creating a virtualenv for this project…
Pipfile: E:\env\auto\Pipfile
Using C:/Program Files/Python36/python.exe (3.6.5) to create virtualenv…
[= ] Creating virtual environment...Using base prefix 'C:\\Program Files\\Python36'
New python executable in C:\Users\win\.virtualenvs\auto-NWXqOu9e\Scripts\python.exe
Installing setuptools, pip, wheel...
done.
Running virtualenv with interpreter C:/Program Files/Python36/python.exe
Successfully created virtual environment!
Virtualenv location: C:\Users\win\.virtualenvs\auto-NWXqOu9e
Creating a Pipfile for this project…
Pipfile.lock not found, creating…
Locking [dev-packages] dependencies…
Locking [packages] dependencies…
Updated Pipfile.lock (ca72e7)!
Installing dependencies from Pipfile.lock (ca72e7)…
================================ 0/0 - 00:00:00
To activate this project's virtualenv, run pipenv shell.
Alternatively, run a command inside the virtualenv with pipenv run.
下一步动作:
>pipenv shell 进入pipenv下的python虚拟环境
E:\env\auto>pipenv shell
Launching subshell in virtual environment…
Microsoft Windows [版本 10.0.17763.914]
(c) 2018 Microsoft Corporation. 著作權所有,並保留一切權利。
输入pip list可以查看虚拟环境下已有的模块:
(auto-NWXqOu9e) E:\env\auto>pip list
Package Version
---------- -------
pip 19.3.1
setuptools 44.0.0
wheel 0.33.6
可以看到跟初始的pycharm一样,一切第三方模块都要重新导入。
这里顺便提下,因为这也算一个第三方模块,所有源码提取于国外源,所以导入第三方模块默认使用的url地址是国外源:url = "https://pypi.org/simple"。
为了加快导入速度,读者可以打开目录下的Pipfile文件,修改里面的url为国内源(笔者推荐清华源)
name可改可不改。
以上修改读者自愿!
接着就是导入第三方模块,按需要封装的程序所需的模块导入即可。
>pipenv install pyinstaller
>pipenv install pywin32
Installing pywin32…
Adding pywin32 to Pipfile's [packages]…
Installation Succeeded
Pipfile.lock (bb5dc2) out of date, updating to (ca72e7)…
Locking [dev-packages] dependencies…
Locking [packages] dependencies…
Success!
Updated Pipfile.lock (bb5dc2)!
Installing dependencies from Pipfile.lock (bb5dc2)…
================================ 1/1 - 00:00:05
导入完成,再在虚拟环境目录下执行pyinstaller封装指令即可。
E:\env\auto>pyinstaller -F -i anjian.ico --distpath anjian/ --clean -w autoUI.py -p auto.py --hidden-import auto
关于pyinstaller封装指令:
--distpath : 打包到哪个目录下
如果不指定 --dispatch 的话,最后会默认发布到 dist 目录下
-w: 指定生成 GUI 软件,也就是运行时不打开控制台
-c: 运行时打开控制台
-i : 指定打包后可执行文件的图标
--clean: 在构建之前清理PyInstaller缓存并删除临时文件
关于打包成什么样,有两种选择:
-D: 创建包含可执行文件的单文件夹包,同时会有一大堆依赖的 dll 文件,这是默认选项
-F: 只生成一个 .exe 文件,如果项目比较小的话可以用这个,但比较大的话就不推荐
如果要打包文件附带自建的py模块,则用如下方式添加即可。
pyinstaller [主文件] -p [其他文件1] -p [其他文件2] --hidden-import [自建模块1] --hidden-import [自建模块2]