pipenv install执行后依赖包未出现在pip列表且无法导入的问题求助
pipenv install执行后依赖包未出现在pip列表且无法导入的问题求助
最近碰到了Pipenv一个特别奇怪的行为,完全搞不懂为啥会这样。
先说说我的环境情况:
- 在Rosetta下运行Terminal和iTerm2
- 通过Pyenv(版本2.4.8)安装了Python 3.11.9,并且设置为全局版本(执行了
pyenv global 3.9.11——这里注意我可能手滑写错了版本号,实际全局是3.11.9) - 另外还从Python官网直接下载安装了另一个独立的Python 3.11.9版本
我搭了个测试项目,结构如下:
/dependencyExp_01/ |--app.py |--Pipfile
其中Pipfile的内容是:
[[source]] url = "https://pypi.org/simple" verify_ssl = true name = "pypi" [packages] packaging = "*" typing_extensions = "*" [dev-packages]
app.py的代码很简单:
from packaging.version import Version print("something")
我用$ pipenv install命令安装了依赖包。
重要提示:下面所有命令都是在虚拟环境中执行的
然后我运行$ pip list查看已安装包,结果发现packaging居然不在列表里:
Package Version ---------- ------- pip 24.3.1 setuptools 75.6.0 wheel 0.45.1
但当我运行$ pipenv graph查看依赖树时,packaging明明在里面:
importlib-metadata==8.0.0 - zipp [required: >=0.5, installed: 3.19.2] jaraco.collections==5.1.0 - jaraco.text [required: Any, installed: 3.12.1] - autocommand [required: Any, installed: 2.2.2] - inflect [required: Any, installed: 7.3.1] - more-itertools [required: >=8.5.0, installed: 10.3.0] - typeguard [required: >=4.0.1, installed: 4.3.0] - typing-extensions [required: >=4.10.0, installed: 4.12.2] - jaraco.context [required: >=4.1, installed: 5.3.0] - backports.tarfile [required: Any, installed: 1.2.0] - jaraco.functools [required: Any, installed: 4.0.1] - more-itertools [required: Any, installed: 10.3.0] - more-itertools [required: Any, installed: 10.3.0] packaging==24.2 tomli==2.0.1
更离谱的是,我运行app.py直接报错找不到模块:
(dependencyExp_01) jingwang@jing-MacBook-Pro dependencyExp_01 % python app.py Traceback (most recent call last): File "/Users/jingwang/Documents/PythonProject/dependencyExp_01/app.py", line 1, in <module> from packaging.version import Version ModuleNotFoundError: No module named 'packaging'
后来我手动用$ pip install packaging安装了这个包,再运行$ pip list,packaging就正常出现在列表里了:
Package Version ---------- ------- packaging 24.2 pip 24.3.1 setuptools 75.6.0 wheel 0.45.1
这时候再看$ pipenv graph,依赖树和之前完全没变化:
importlib-metadata==8.0.0 - zipp [required: >=0.5, installed: 3.19.2] jaraco.collections==5.1.0 - jaraco.text [required: Any, installed: 3.12.1] - autocommand [required: Any, installed: 2.2.2] - inflect [required: Any, installed: 7.3.1] - more-itertools [required: >=8.5.0, installed: 10.3.0] - typeguard [required: >=4.0.1, installed: 4.3.0] - typing-extensions [required: >=4.10.0, installed: 4.12.2] - jaraco.context [required: >=4.1, installed: 5.3.0] - backports.tarfile [required: Any, installed: 1.2.0] - jaraco.functools [required: Any, installed: 4.0.1] - more-itertools [required: Any, installed: 10.3.0] - more-itertools [required: Any, installed: 10.3.0] packaging==24.2 tomli==2.0.1
现在再运行app.py就正常了,能顺利打印出内容:
(dependencyExp_01) jingwang@jing-MacBook-Pro dependencyExp_01 % python app.py something (dependencyExp_01) jingwang@jing-MacBook-Pro dependencyExp_01
目前我只能用手动$ pip install <包名>的方式来补装这些“失踪”的包,但实在太麻烦了,要是pipenv install能正常处理就好了。有没有大佬能帮忙解释下这种情况的原因?谢谢啦!
备注:内容来源于stack exchange,提问作者infinity_coding7
相关产品推荐
相关产品推荐

