如何构建从Poetry开发环境到生产环境的部署工作流?
高效部署工作流方案
方案1:用Poetry打包成可执行文件(推荐)
直接把Python解释器、依赖和代码打包成可执行文件,同事无需安装Python,直接运行即可。
- 步骤1:安装打包工具
在开发环境通过Poetry添加依赖:poetry add --dev pyinstaller - 步骤2:修改子进程调用逻辑
打包后无需再调用外部Python路径,推荐直接导入模块执行,避免路径问题:# 替换原来的subprocess调用,假设ixl_grade_input有main入口函数 import ixl_grade_input ixl_grade_input.main() - 步骤3:执行打包命令
针对托盘应用生成无命令行窗口的单文件:
打包后的可执行文件在poetry run pyinstaller --onefile --windowed system_tray.pydist目录下,直接将该目录发给同事,双击即可运行,还可将快捷方式放入Windows启动文件夹实现开机启动。
方案2:虚拟环境嵌入项目+相对路径调用
将虚拟环境移至项目内部,用相对路径调用,同事无需安装Python即可运行项目。
- 步骤1:把虚拟环境放到项目目录
配置Poetry在项目内生成虚拟环境:
重新创建虚拟环境并安装依赖:poetry config virtualenvs.in-project true
虚拟环境会生成在项目根目录的poetry env remove python3.11 poetry install.venv文件夹中。 - 步骤2:修改路径为相对路径
import os # 获取当前脚本所在目录,拼接相对路径 current_dir = os.path.dirname(os.path.abspath(__file__)) python_path = os.path.join(current_dir, '.venv', 'Scripts', 'python.exe') args = [python_path, 'ixl_grade_input.py'] subprocess.call(args) - 步骤3:分发项目
将整个项目文件夹(包含.venv)压缩后发给同事,直接运行system_tray.py即可。注意:虚拟环境与系统架构、Python版本绑定,需确保同事机器与你的环境一致(如均为Windows 64位)。
方案3:便携Python+requirements.txt
用便携版Python配合依赖清单,避免拷贝大体积虚拟环境。
- 步骤1:导出依赖清单
通过Poetry生成requirements.txt:poetry export --without-hashes --format=requirements.txt > requirements.txt - 步骤2:配置便携Python
从Python官网下载对应版本的便携压缩包(如Windows的embeddable zip file),解压到项目目录的portable_python文件夹。 - 步骤3:编写自动安装脚本与修改路径
创建setup.bat自动安装依赖:
修改@echo off portable_python\python.exe -m pip install -r requirements.txt echo 依赖安装完成,按任意键退出 pausesystem_tray.py的Python路径:import os current_dir = os.path.dirname(os.path.abspath(__file__)) python_path = os.path.join(current_dir, 'portable_python', 'python.exe') args = [python_path, 'ixl_grade_input.py'] subprocess.call(args) - 步骤4:分发项目
将项目文件夹(含portable_python、requirements.txt、setup.bat及所有脚本)发给同事,先运行setup.bat安装依赖,之后即可运行system_tray.py,同样可设置开机启动。
内容的提问来源于stack exchange,提问作者pedwards
相关产品推荐
相关产品推荐

