打包发布Python程序是开发中必不可少的一环,而Pyinstaller是一个十分优秀的打包工具,它可将Python代码打包成一个可执行的文件,方便在其他环境中运行。本文将介绍在Windows环境下如何使用Pyinstaller进行打包发布。以下是具体步骤:
安装Pyinstaller
pip install pyinstaller
打包发布
1. 单文件发布
打包为单个exe文件,执行以下命令:
pyinstaller -F your_program.py
执行完命令后,会在当前目录下生成一个名为your_program.exe
的可执行文件,其中your_program.py
为你要打包的Python代码文件名。
说明:
-F
参数表示生成单个可执行文件。
2. 文件目录发布
打包为文件夹,执行以下命令:
pyinstaller your_program.py
执行完命令后,会在当前目录下生成一个名为dist
的文件夹,其中包含可执行文件和相关的依赖文件。
说明:
默认情况下,Pyinstaller会将所有依赖的库一起打包到生成的可执行文件中,如果要排除某个库,可以使用--exclude
参数。
例如,排除npyscreen
库:
pyinstaller --exclude npyscreen your_program.py
3. 添加图标
在生成的可执行文件上添加图标,执行以下命令:
pyinstaller -F -i your_icon.ico your_program.py
说明:
-i
参数表示添加图标,其中your_icon.ico
为你要添加的图标文件名。
Pyinstaller打包经验总结
- 打包时间长,需耐心等待。
- 打包后程序体积较大,可能超过几十MB。
- 如果程序依赖库较多,可能会出现打包失败或打包后的程序无法运行的情况。
- 可以使用
--debug
参数来调试打包时出现的问题。 - 可以通过指定Python版本进行打包,例如:
pyinstaller --name your_program --clean --onedir --distpath ./dist --specpath ./build --add-data "resource;resource" --hidden-import sklearn.metrics _version.py
--additional-hooks-dir ./script --workpath ./build --debug --log-level DEBUG --log-level WARN --log-level INFO your_program.py
该命令使用Python3.7版本进行打包,其中--name
参数表示指定打包后的可执行文件名,--add-data
参数表示添加资源文件,--hidden-import
参数表示指定需要导入的库。
示例1
以下是一个示例Python代码,功能为读取指定目录下的所有图片文件,并将它们进行压缩处理。
import os
from PIL import Image
def compress_images(input_dir, output_dir, max_size):
for root, dirs, files in os.walk(input_dir):
for filename in files:
if not filename.endswith('.jpg') and not filename.endswith('.png'):
continue
filepath = os.path.join(root, filename)
output_path = os.path.join(output_dir, filename)
if os.path.isfile(output_path):
continue
with Image.open(filepath) as img:
width, height = img.size
while os.path.getsize(filepath) > max_size:
img.thumbnail((width // 2, height // 2))
img.save(output_path)
print(f'{filename} compressed to {os.path.getsize(output_path)} bytes.')
接下来我们使用Pyinstaller将其打包成单个exe可执行文件。
pyinstaller -F compress_images.py
执行完命令后,在当前目录下生成名为compress_images.exe
的可执行文件。
示例2
以下是另一个示例Python代码,功能为使用selenium模拟浏览器自动登录网站并抓取数据。
from selenium import webdriver
url = 'https://www.example.com'
username = 'username'
password = 'password'
options = webdriver.ChromeOptions()
options.add_argument("--headless")
driver = webdriver.Chrome(options=options)
driver.get(url)
# 输入用户名和密码
driver.find_element_by_id('username').send_keys(username)
driver.find_element_by_id('password').send_keys(password)
# 点击登录按钮
driver.find_element_by_id('login_btn').click()
# 等待页面加载完成
driver.implicitly_wait(10)
# 抓取数据
data = driver.find_elements_by_xpath('//div[@class="content"]/text()')
# 输出数据
print(data)
# 关闭浏览器
driver.quit()
接下来我们使用Pyinstaller将其打包成文件夹。
pyinstaller login.py
执行完命令后,在当前目录下生成一个名为dist
的文件夹,其中包含可执行文件和相关的依赖文件。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Pyinstaller 打包发布经验总结 - Python技术站