嵌入式打包:
解释:
用嵌入式版本的python解释器进行打包程序,python有嵌入式版本,而且这个嵌入式版本的解释器大小很小,可以很好的省磁盘空间!!!
打包步骤:
1、从python官网下载嵌入式版本的python
Welcome to Python.orgThe official home of the Python Programming Languagehttps://www.python.org/
下载网址:
下载下来,放在一个文件夹里:
2、配置环境
解压该压缩包,进入该文件夹里:
更改python310._pth文件里面的内容:
下载get-pip.py文件:
Index of /pip/https://bootstrap.pypa.io/pip/
将get-pip.py放到python解释器同级目录:
进入C:\Users\10501\Desktop\RunPythonWork\python-3.10.11-embed-amd64该文件夹,打开cmd:
执行如下命令:
.\python.exe get-pip.py
这样就会生成两个文件夹Lib、Scripts:
进入Scripts文件夹,打开cmd:
用这个文件夹的pip进行安装你自己的程序所需要的第三方库:
现在可以查看嵌入式pyhthon文件夹的大小:
这已经很小了,相比于非嵌入式版本的python小很多了。
3、将自己写好的程序文件夹放入与python-3.10.11-embed-amd64同级目录下:
4、用嵌入式python执行写好的程序源代码:
.\python-3.10.11-embed-amd64\python.exe .\PackageTest\main\main.py
5、编写bat文件去直接执行命令:
start.bat:
@echo off
chcp 65001
echo 开始运行
.\python-3.10.11-embed-amd64\python.exe .\PackageTest\main\main.py
pause
点击start.bat运行:
注意bug解决:
1、C:\Users\10501\Desktop\RunPythonWork>.\python-3.10.11-embed-amd64\python.exe .\PackageTest\main\main.py
Traceback (most recent call last):
File "C:\Users\10501\Desktop\RunPythonWork\PackageTest\main\main.py", line 15, in <module>
from PackageTest.utils.utils import *
ModuleNotFoundError: No module named 'PackageTest'
报错:找不到自己创建的包!!!
main.py的代码如下:
# ---encoding:utf-8---
# @Time : 2023/6/22 17:35
# @Author : CBAiotAigc
# @Email :1050100468@qq.com
# @Site :
# @File : main.py
# @Project : Test
# @Software: PyCharm
# import os
# import sys
# BASE_PATH = os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
# print(BASE_PATH)
# sys.path.append(BASE_PATH)
from PackageTest.utils.utils import *
print("main")
上面的PackageTest是我创建的包:
解决方案:
代码最上面添加如下代码,即将sys.path追加项目根目录:
import os
import sys
BASE_PATH = os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
print(BASE_PATH)
sys.path.append(BASE_PATH)
完整的main.py如下:
# ---encoding:utf-8---
# @Time : 2023/6/22 17:35
# @Author : CBAiotAigc
# @Email :1050100468@qq.com
# @Site :
# @File : main.py
# @Project : Test
# @Software: PyCharm
import os
import sys
BASE_PATH = os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
print(BASE_PATH)
sys.path.append(BASE_PATH)
from PackageTest.utils.utils import *
print("main")
再次运行则可以成功:
大功告成!!!