内部Python库复用的依赖管理问题求助
解决方案
1. 可编辑本地安装(推荐)
直接用pip的可编辑安装模式,把pkg1关联到当前项目的venv中,同时自动安装其依赖,且pkg1的源文件位置保持不变,后续修改也会实时生效:
- 先给pkg1添加简单的
setup.py(如果没有的话),让pip能识别依赖:
from setuptools import setup, find_packages with open('requirements.txt', 'r') as f: install_requires = [line.strip() for line in f if line.strip() and not line.startswith('#')] setup( name='pkg1', version='0.1.0', packages=find_packages(), install_requires=install_requires, )
- 激活项目的venv后,执行命令:
pip install -e /绝对路径/to/pkg1
这样pkg1会以链接形式关联到venv的site-packages,同时自动安装requirements.txt里的所有依赖,直接用from pkg1 import XY导入即可,无需手动设置PYTHONPATH。
2. 需求文件直接引用依赖(无需修改pkg1结构)
如果不想给pkg1加配置文件,可在新项目的requirements.txt中直接引用pkg1的依赖,保留PYTHONPATH配置:
- 在新项目的
requirements.txt末尾添加一行:-r /绝对路径/to/pkg1/requirements.txt - 激活venv后执行
pip install -r requirements.txt,会自动安装项目自身和pkg1的所有依赖 - 手动设置PYTHONPATH(或通过IDE配置)指向pkg1目录,即可正常导入
3. 自动配置PYTHONPATH(避免手动设置)
如果频繁切换项目,不想每次手动配置PYTHONPATH,可通过venv的sitecustomize.py自动添加路径:
- 找到当前项目venv的site-packages目录,比如
venv/lib/python3.10/site-packages - 在该目录下创建
sitecustomize.py,写入:
import sys sys.path.append('/绝对路径/to/pkg1')
- 配合方案2的需求文件引用,即可实现无需手动配置PYTHONPATH,且依赖自动安装
注意事项
- 如果pkg1的依赖更新了,方案1只需重新执行
pip install -e /path/to/pkg1,方案2重新执行pip install -r requirements.txt即可 - 建议用绝对路径避免路径问题,也可结合环境变量管理pkg1的路径(比如定义
PKG1_PATH环境变量,在配置文件中引用)
内容的提问来源于stack exchange,提问作者baskettaz
相关产品推荐
相关产品推荐

