使用Pipenv安装本地包后出现ModuleNotFoundError求助
解决Pipenv安装本地包后无法导入的问题
以下是几个排查和解决的步骤:
使用开发模式安装本地包
普通安装可能没有正确建立本地包和虚拟环境的关联,改用可编辑模式安装,虚拟环境会直接链接到你的本地项目目录,修改代码也能实时生效:pipenv install -e /Users/me/path/to/mypackage检查项目目录结构
find_packages()默认只会识别包含__init__.py的子目录,确保你的项目结构符合标准:mypackage/ # 项目根目录(setup.py所在目录) ├── setup.py └── mypackage/ # 实际的包目录,名称需和setup.py里的name一致 ├── __init__.py └── 你的模块文件.py如果包文件直接放在项目根目录下(无同名子目录),需修改setup.py里的
packages参数为明确的包名:setup( name="mypackage", version="0.1", packages=["mypackage"], # 直接指定包名,替代find_packages() )验证Pipfile的记录
打开项目根目录的Pipfile,确认里面存在本地包的条目:[packages] mypackage = {path = "/Users/me/path/to/mypackage"}如果没有这条记录,说明之前的安装命令未执行成功,重新运行安装命令并检查路径是否正确。
确认虚拟环境Python版本一致性
有时pipenv会自动选择不同的Python版本,导致安装和运行环境不匹配:- 执行
pipenv run python --version查看安装时使用的Python版本 - 进入shell后执行
python --version对比版本号
若版本不一致,指定版本重新创建虚拟环境并安装:
pipenv --rm pipenv --python 3.x install -e /Users/me/path/to/mypackage将
3.x替换为你实际使用的Python版本。- 执行
检查包的安装位置
进入虚拟环境后,执行以下命令查看包的安装信息:pip show mypackage查看
Location字段:- 开发模式下应显示你的本地项目目录,或虚拟环境site-packages里的
.egg-link文件指向你的项目 - 普通安装则显示虚拟环境的site-packages目录
如果Location不正确,说明安装路径有误,重新用正确的绝对路径执行安装命令。
- 开发模式下应显示你的本地项目目录,或虚拟环境site-packages里的
内容的提问来源于stack exchange,提问作者Steve Ahlswede
相关产品推荐
相关产品推荐

