没有名为 pip 的模块使用基于 virtualenv 的 python
Posted
技术标签:
【中文标题】没有名为 pip 的模块使用基于 virtualenv 的 python【英文标题】:No module named pip which using virtualenv-based python 【发布时间】:2022-01-20 14:42:46 【问题描述】:运行系统安装的python时,可以找到pip:
% which python3
/usr/local/bin/python3
% python3 --version
Python 3.9.7
% /usr/local/bin/python3 -m pip --version
pip 21.3.1 from /usr/local/lib/python3.9/site-packages/pip (python 3.9)
但是,如果我用这个python3
创建一个virtualenv 并激活它,那么我再也找不到pip
:
% which python3
~/venv/bin/python3
% ls -la `which python3`
~/venv/bin/python3 -> /usr/local/bin/python3
% python3 -m pip --version
~/venv/bin/python3: No module named pip
我对此完全感到困惑。
通过符号链接读取可能使pip
消失的原因是什么?
【问题讨论】:
ls ~/venv/bin/
里面有点子吗?激活virtualenv后which pip
怎么样。
@Jay:你说得对,~/venv/bin/
没有点子。 which pip
激活 virtualenv 后失败。
我认为pip
是 virtualenvs 的标准配置;例如在另一个平台上,我可以访问which pip
,在venv
中找到;此外,它不是系统 pip
的符号链接。 . .
对,venv/bin
中应该有一个pip
。其次~/venv/bin/python3
不应该是符号链接。你是如何创建virtualenv
的?尝试创建一个新的 virtualenv new_venv -p python3
并确保它在 new_venv/bin
中有 pip 并且 new_env/bin/python3
不是符号链接
@Jay:通过python3 -m virtualenv .
修复它;看起来你基本上是在正确的轨道上。想要发布答案?
【参考方案1】:
python 3.3 中引入的python 的venv
模块与virtualenv
不同,具有virtualenv
的功能子集。
来自https://virtualenv.pypa.io/en/latest/
较慢(由于没有应用数据种子方法) 不可扩展,无法为任意安装的python版本创建虚拟环境(并自动发现 这些), 不能通过 pip 升级, 没有丰富的编程 API(描述虚拟环境而不创建它们)。
venv
模块不提供此库的所有功能,例如 只是一些更突出的:
所以使用venv
创建的环境没有安装单独的pip
,所以我建议改用virtualenv
。
你可以通过运行安装virtualenv
模块
pip3 install virtualenv
在当前目录下新建virtualenv
-
python3 -m virtualenv .
或者你也可以使用
virtualenv env_name -p python3
【讨论】:
Why venv is preferred over virtualenv以上是关于没有名为 pip 的模块使用基于 virtualenv 的 python的主要内容,如果未能解决你的问题,请参考以下文章
pip install 出错:“没有名为 pip.__main__ 的模块”[重复]
ModuleNotFoundError:没有名为“键盘”的模块,尝试过 pip3 安装,尝试过 -pip list 它在那里
ImportError:尝试安装软件包时没有名为 pip 的模块
ModuleNotFoundError:尝试为 Django 安装 Python 包时没有名为“pip.download”的模块