pip --editable安装成功但包无法导入(非可编辑安装运行正常)
可编辑模式安装Git私有仓库Python包后导入失败的解决方案
根因定位
可编辑模式(-e)安装和普通安装的逻辑存在本质差异:
- 普通安装:pip会根据
setup.py的package_dir配置,将src/asdf_logging目录直接复制到虚拟环境的site-packages目录下,因此导入完全正常 - 可编辑安装:pip只会将
setup.py所在的目录(即本次场景中的python-pkg目录)加入Python的sys.path,不会复制任何包文件。此时Python只会在python-pkg根目录下查找asdf_logging包,但实际包存放在python-pkg/src子目录下,因此触发ModuleNotFoundError
额外注意:检查requirements.txt中-e参数前后不要有多余的空格或特殊字符,避免pip解析参数异常。
解决方案
两种可行修复方案,按需选择即可:
方案1:修改setup.py配置(推荐,无侵入、无需修改安装命令)
调整setup.py的包路径映射规则,明确告知setuptools所有包都存放在src目录下,修改后的配置如下:
from setuptools import setup, find_packages setup( name="asdf-logging", description="...", version="1.0.0", packages=find_packages(where="src"), # 自动扫描src目录下的所有包,替换原有硬编码的packages配置 package_dir={"": "src"}, # 声明所有包的根目录为src author_email="me@asdf.com" )
修改后重新执行pip install -r requirements.txt即可正常导入。
方案2:手动添加路径(适合临时调试、无需修改仓库代码)
激活虚拟环境后,在业务代码运行前手动将包所在的src目录加入sys.path:
import sys # 路径替换为你本地实际的src目录绝对路径即可 sys.path.insert(0, "/-theCorrectAbsPathToParent-/py-venv-tooling/src/asdf-logging/python-pkg/src") import asdf_logging
验证方法
配置完成后可以执行以下命令确认是否生效:
- 激活虚拟环境后执行
python -c "import sys; print([p for p in sys.path if 'asdf-logging' in p])",确认输出路径包含python-pkg/src目录 - 执行
python -c "import asdf_logging; print(asdf_logging.__file__)",输出路径指向venv/src/asdf-logging/python-pkg/src/asdf_logging即配置成功
内容的提问来源于stack exchange,提问作者some bits flipped
相关产品推荐
相关产品推荐

