没有名为 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/

venv 模块不提供此库的所有功能,例如 只是一些更突出的:

较慢(由于没有应用数据种子方法) 不可扩展,无法为任意安装的python版本创建虚拟环境(并自动发现 这些), 不能通过 pip 升级, 没有丰富的编程 API(描述虚拟环境而不创建它们)。

所以使用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__ 的模块”[重复]

Spyder IDE:Mac 上没有名为 pip 的模块

ModuleNotFoundError:没有名为“键盘”的模块,尝试过 pip3 安装,尝试过 -pip list 它在那里

ImportError:尝试安装软件包时没有名为 pip 的模块

设置 virtualenv:没有名为“pip”的模块

ModuleNotFoundError:尝试为 Django 安装 Python 包时没有名为“pip.download”的模块