pip install .安装本地包后仅原目录可导入问题求助
问题原因与解决方案
核心原因
- setup.py配置缺失关键内容:你的
setup.py没有正确指定需要打包分发的实际代码目录(内部的mypkg),导致pip install .仅生成了元数据目录mypkg-1.3.0.dist-info,并没有把真正的包代码安装到Python的site-packages路径下。 - 根目录多余的
__init__.py造成假象:根目录下的__init__.py让Python将当前项目目录临时加入模块搜索路径(sys.path),所以在原目录下能导入mypkg,但这不是真正的全局安装效果——离开目录后,当前目录不在sys.path里,自然找不到模块。
修复步骤
- 清理多余文件:删除根目录下的
__init__.py,真正的包是内部嵌套的mypkg目录,根目录只是项目的容器,不需要作为Python包存在。 - 修正setup.py配置:确保
setup.py明确包含需要分发的包。推荐使用find_packages()自动识别包,或者手动指定包名。示例配置如下:
from setuptools import setup, find_packages setup( name="mypkg", version="1.3.0", packages=find_packages(), # 自动扫描所有包含__init__.py的子目录作为包 # 如果手动指定,可写成:packages=['mypkg'], )
- 重新安装包:
- 先卸载已安装的无效版本:
pip uninstall -y mypkg - 重新执行安装:
pip install .
- 先卸载已安装的无效版本:
- 验证安装:
- 执行
pip show mypkg查看安装路径,进入该路径应该能看到mypkg目录 - 切换到任意其他目录(比如
cd ~/Desktop),打开Python交互环境执行import mypkg,此时应该能正常导入并使用mypkg.components.body_columns.dummify
- 执行
内容的提问来源于stack exchange,提问作者stat_is_quo
相关产品推荐
相关产品推荐

