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

Posted

技术标签:

【中文标题】设置 virtualenv:没有名为“pip”的模块【英文标题】:Setting up a virtualenv: No module named 'pip' 【发布时间】:2014-03-16 14:49:49 【问题描述】:

我在 Windows Server 2008 R2 机器上全新安装了 Python 3.3.4。我已经在全球范围内成功安装了最新版本的 Setuptools、Pip 和 Virtualenv:

python ez_setup.py
easy_install pip
pip install virtualenv

现在,当我尝试使用 virtualenv ENV 设置 virtualenv 时,我得到以下堆栈跟踪:

New python executable in ENV\Scripts\python.exe
Installing setuptools, pip...
  Complete output from command [path redacted]\ENV\Scripts\python.exe -c "import sys, pip; sys...d\"] + sys.argv[1:]))" setuptools pip:
  Traceback (most recent call last):
  File "<string>", line 1, in <module>
ImportError: No module named 'pip'
----------------------------------------
...Installing setuptools, pip...done.
Traceback (most recent call last):
  File "C:\Python33\lib\runpy.py", line 160, in _run_module_as_main
    "__main__", fname, loader, pkg_name)
  File "C:\Python33\lib\runpy.py", line 73, in _run_code
    exec(code, run_globals)
  File "C:\Python33\Scripts\virtualenv.exe\__main__.py", line 9, in <module>
  File "C:\Python33\lib\site-packages\virtualenv.py", line 824, in main
    symlink=options.symlink)
  File "C:\Python33\lib\site-packages\virtualenv.py", line 992, in create_environment
    install_wheel(to_install, py_executable, search_dirs)
  File "C:\Python33\lib\site-packages\virtualenv.py", line 960, in install_wheel
    'PIP_NO_INDEX': '1'
  File "C:\Python33\lib\site-packages\virtualenv.py", line 902, in call_subprocess
    % (cmd_desc, proc.returncode))
OSError: Command [path redacted]\ENV\Scripts\python.exe -c "import sys, pip; sys...d\"] + sys.argv[1:]))" setuptools pip failed with error code 1

我以前从未见过这个错误,堆栈跟踪对我来说没有任何意义。我可以从 Python shell 成功import pip。谁能帮我解决这个问题?

更新当我提供 --system-site-packages 标志时,env 安装成功。

【问题讨论】:

确保在Path环境变量中设置了'pip.exe'的路径。 @PriyankPatel pip 肯定在路径上;我可以使用where pip 找到它并使用pip 运行它 【参考方案1】:

我使用deactivate 命令停用了虚拟环境。然后我手动删除了虚拟环境文件夹并使用命令python -m venv ./venv 重新创建了它。这解决了我的问题。但是,这显然会删除您作为虚拟环境的一部分安装的所有包和模块 - 但如果 pip 丢失,您可能没有安装很多。

【讨论】:

【参考方案2】:

我知道它在您的问题底部以粗体显示 Update,但我和我的同事都错过了您回答了自己的问题。

所以,如果其他人可能会错过它,请尝试使用 --system-site-packages 标志。这对我们有用:

virtualenv ENV --system-site-packages

【讨论】:

【参考方案3】:

Python 错误票中的有用解决方法对遇到此问题的其他人来说:

运行virtualenv venv --no-setuptools 激活 virtualenv (venv\Scripts\activate) 下载并运行 get-pip.py 以手动将 pip 和 setuptools 安装到此虚拟环境中 照常继续

或者,降级到 3.3.3。这应该在 3.3.5 中正确修复

【讨论】:

【参考方案4】:

令人讨厌的是,这看起来可能是一个 Python 错误。 https://github.com/pypa/virtualenv/issues/564 引用 http://bugs.python.org/issue20621,它仍然处于打开状态,但看起来它将在 3.3.5 中修复。

将我的 Python 安装回退到 3.3.3 解决了这个问题。

【讨论】:

以上是关于设置 virtualenv:没有名为“pip”的模块的主要内容,如果未能解决你的问题,请参考以下文章

PYPY venv pip 错误:ModuleNotFoundError:没有名为“pip._vendor.six”的模块

Virtualenv使用笔记

pip install virtualenv 和 virtualenvwrapper 时出现不支持的语言环境设置错误

如何操作virtualenv

pip 安装在全局站点包而不是 virtualenv

使用下载缓存将 PIP 包安装到 Virtualenv