【问题标题】:Virtualenv doesn't install pipVirtualenv 不安装 pip
【发布时间】:2014-02-08 17:54:33
【问题描述】:

我已经通过自制软件安装了python3,更新了pipsetuptools,通过pip 安装了virtualenv。现在我正在尝试创建一个虚拟环境。不幸的是,我无法将 pip 添加到 virtualenv。基本上:

$ ls -lha venv/bin/
total 80
drwxr-xr-x  9 foghin  staff   306B Jan 19 17:16 .
drwxr-xr-x  6 foghin  staff   204B Jan 19 17:16 ..
-rw-r--r--  1 foghin  staff   2.2K Jan 19 17:16 activate
-rw-r--r--  1 foghin  staff   1.2K Jan 19 17:16 activate.csh
-rw-r--r--  1 foghin  staff   2.4K Jan 19 17:16 activate.fish
-rw-r--r--  1 foghin  staff   1.1K Jan 19 17:16 activate_this.py
lrwxr-xr-x  1 foghin  staff     7B Jan 19 17:16 python -> python3
-rwxr-xr-x  1 foghin  staff    13K Jan 19 17:16 python3
lrwxr-xr-x  1 foghin  staff     7B Jan 19 17:16 python3.3 -> python3

AFAIK pip 也应该在那里。创建具有高详细度的虚拟环境会产生以下结果:

Installing setuptools, pip...
  Running command /Users/foghin/code/tastekid/venv/bin/python3 -c "import sys, pip; pip...ll\"] + sys.argv[1:])" setuptools pip
  Ignoring indexes: https://pypi.python.org/simple/
  Requirement already satisfied (use --upgrade to upgrade): setuptools in /usr/local/lib/python3.3/site-packages
  Requirement already satisfied (use --upgrade to upgrade): pip in /usr/local/lib/python3.3/site-packages
  Cleaning up...
...Installing setuptools, pip...done.

这意味着我在激活虚拟环境时安装的所有包都会转到我的全局站点包 (/usr/local/lib/python3.3/site-packages),但它们不会被沙盒 python 拾取。

如何让virtualenv 在我的本地环境中正确安装 pip?

更新: virtualenv 版本为 1.11。

【问题讨论】:

  • 尝试使用virtualenv --no-site-packages创建环境。
  • 你应该提到virtualenv的确切版本号,这样如果这是一个错误,就会更容易追踪。
  • @minitech from virtualenv --help: --no-site-packages DEPRECATED. Retained only for backward compatibility. Not having access to global site-packages is now the default behavior.
  • @StefanoSanfilippo 更新了我的问题以包含 virtualenv 版本。

标签: python macos python-3.x virtualenv pip


【解决方案1】:

在撰写本文时,Homebrew 安装了 Python 3.3.3 ($ brew info python3)。

从 Python 3.3 开始,Python 的标准库现在包含自己的虚拟环境实现,并且不需要 virtualenv 包。请参阅venv module documentation。使用 Homebrew Python 3 包,命令行工具被命名为pyvenv-3.3

我相信使用此实现应该可以解决您遇到的问题。

【讨论】:

  • 我也尝试过pyvenv,但没有明确安装pipsetuptools。我最终在虚拟环境中手动安装它们,这似乎奏效了。但是,这仍然不能解释为什么 virtualenv 不能像宣传的那样工作。