能否用Pipenv添加Python路径?未打包旧Python项目路径配置方法
在Pipenv中指定路径导入未打包Python项目的方法
嘿,我之前从Buildout转Pipenv时也碰到过一模一样的需求,给你分享几个实用的解决方案:
方法1:脚本内临时添加模块路径
这是最直接的快速方案,适合临时测试或者单个脚本的场景。在你的Python入口文件顶部加入这段代码,把未打包项目的绝对路径追加到Python的模块搜索路径里:
import sys sys.path.append("/absolute/path/to/your/unpacked/project") # 要是有多个未打包项目,可以继续追加路径 sys.path.append("/another/path/to/other/project")
之后就能像导入普通PyPI包一样,直接导入这些项目里的模块了。缺点是每个需要访问的脚本都得加这段代码,不够持久。
方法2:用.env文件设置PYTHONPATH环境变量
这个方法更省心,不用修改任何业务代码。在你的Pipenv项目根目录创建一个.env文件,内容如下:
PYTHONPATH="/path/to/first/unpacked/project:/path/to/second/unpacked/project"
保存后,每次用pipenv shell或者pipenv run启动虚拟环境时,Pipenv会自动加载这个环境变量,Python会自动把这些路径纳入模块搜索范围。这样所有在这个虚拟环境里运行的脚本,都能直接导入未打包项目的模块。
方法3:创建极简setup.py用可编辑模式安装
如果你的未打包项目打算长期维护,这是最规范的做法。给每个未打包项目的根目录创建一个极简的setup.py:
from setuptools import setup, find_packages setup( name="your-project-name", version="0.1", packages=find_packages(), )
然后在Pipenv里用可编辑模式安装该项目:
pipenv install -e /absolute/path/to/your/unpacked/project
这样Pipenv会把这个项目注册到虚拟环境的依赖列表里,你可以直接导入模块,而且项目代码修改后会实时生效,不需要重新安装。这种方式和Buildout的依赖管理逻辑最接近,也更符合现代Python包管理的规范。
内容的提问来源于stack exchange,提问作者Eric
相关产品推荐
相关产品推荐

