安装时能否切换路径依赖的develop模式?生产环境部署方案
生产环境处理本地路径依赖的正确姿势
1. 用环境变量一键切换所有依赖的develop模式
最省心的方式是在pyproject.toml里给本地依赖的develop属性加个环境变量开关,不用每次手动修改配置:
把原来的依赖配置改成这样:
[tool.poetry.dependencies] mylib = { path = "../../libs/mylib", develop = "${DEVELOP_MODE:-true}" } # 多个本地库可以统一用这个变量 another-lib = { path = "../../libs/another-lib", develop = "${DEVELOP_MODE:-true}" }
这里${DEVELOP_MODE:-true}的逻辑是:如果未设置DEVELOP_MODE环境变量,默认启用开发模式;生产环境只需设置该变量为false,再执行安装命令即可:
DEVELOP_MODE=false poetry install --no-dev
这样所有本地依赖都会从编辑模式转为正常安装,直接把库的内容复制到项目虚拟环境中,无需手动操作。
2. 直接用Poetry命令参数(适合临时场景)
如果不想修改pyproject.toml,可以使用--no-directory参数,但要注意:这个参数会让Poetry忽略所有路径依赖的本地路径,转而尝试从PyPI拉取对应包。如果你的本地库未上传到PyPI,这个方法就不适用,更适合有私有源的场景:
poetry install --no-dev --no-directory
3. 构建wheel包安装(生产环境最稳定方案)
如果追求生产环境的绝对稳定性,建议先把本地库打包成wheel文件,再作为本地包依赖安装:
- 进入本地库目录,执行打包命令:
cd ../../libs/mylib poetry build
这会在dist目录生成类似mylib-0.1.0-py3-none-any.whl的文件。
2. 修改项目的pyproject.toml,把路径依赖换成wheel文件依赖:
mylib = { file = "../../libs/mylib/dist/mylib-0.1.0-py3-none-any.whl" }
之后执行poetry install --no-dev,Poetry会直接把wheel包的内容复制到虚拟环境,完全脱离原本地库的路径限制,也不用担心开发模式的问题。
内容的提问来源于stack exchange,提问作者amnesia
相关产品推荐
相关产品推荐

