【问题标题】:Trouble creating a virtualenv for python3 on OS X在 OS X 上为 python3 创建 virtualenv 时遇到问题
【发布时间】:2013-09-24 13:26:18
【问题描述】:

我为 python 3 创建的 virtualenv 遇到了一个奇怪的问题。我完成了通常的步骤:

$ virtualenv --python=/opt/local/bin/python3.3 .py3
$ source .py3/bin/activate

我遇到的问题是,当我调用 python --version 时,它仍然报告 2.7.5,即使路径似乎都设置正确。我的virtualenv 是在/Users/barry.flinn/projects/.py3/bin 中创建的,我在运行which python 时得到了这些结果:

$ which python
/Users/barry.flinn/projects/.py3/bin/python

bin 文件夹有以下 python 可执行文件:

lrwxr-xr-x   1 barry.flinn  obfuscated\Domain Users     9 Sep 23 19:39 python -> python3.3
lrwxr-xr-x   1 barry.flinn  obfuscated\Domain Users     9 Sep 23 19:39 python3 -> python3.3
-rwxr-xr-x   1 barry.flinn  obfuscated\Domain Users  9100 Sep 23 19:39 python3.3

显然,调用python 应该给我python 3.3,但它似乎仍然恢复到系统python,即2.7.5。当virtualenv 处于活动状态时,我的$PATH 是:

 /Users/barry.flinn/projects/.py3/bin:/usr/local/mysql/bin:/opt/local/lib/postgresql92/bin:/opt/local/bin:/opt/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/local/go/bin:/usr/local/munki

由于所有这些似乎都是正确的,我对这里发生的事情感到困惑。

更新:

这报告正确:

$ env python --version
Python 3.3.2

对我来说,这有点令人费解。

【问题讨论】:

  • 您是否为python 定义了别名?
  • D**n 它,有一个别名~/.bashrc,我不知道。感谢您的建议。

标签: python macos virtualenv


【解决方案1】:

如果您为python 解释器定义了一个shell 别名,它将覆盖为您的virtualenv 选择的python。例如:

user@x790:~/temp$ alias python=/usr/bin/python
user@x790:~/temp$ python --version
Python 2.7.4
user@x790:~/temp$ virtualenv --python=/usr/bin/python3 foo
Running virtualenv with interpreter /usr/bin/python3
Using base prefix '/usr'
New python executable in foo/bin/python3
Also creating executable in foo/bin/python
Installing distribute.................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................done.
Installing pip................done.
user@x790:~/temp$ . foo/bin/activate
(foo)user@x790:~/temp$ python --version
Python 2.7.4

请注意,报告的 python 版本是 2.7.4,即使为 virtualenv 选择了 python3。使用env 命令绕过别名:

(foo)user@x790:~/temp$ env python --version
Python 3.3.1

最后,您可以通过暂时禁用单个命令的 python 别名或永久取消定义来解决此问题:

(foo)user@x790:~/temp$ \python --version
Python 3.3.1
(foo)user@x790:~/temp$ unalias python
(foo)user@x790:~/temp$ python --version
Python 3.3.1

【讨论】:

  • 谢谢,这正是我的问题。
  • @bogatron 能不能解释的更清楚一些,我还是不知道怎么处理。当我尝试运行时:virtualenv --python /Library/Frameworks/Python.framework/Versions/3.3/Python three_py 不是在当前位置目录中创建名为three_py 的新虚拟环境,而是激活其中一个虚拟环境。
  • 看起来您缺少一个“=”符号。应该是virtualenv --python=/Library/Frameworks/Python.framework/Versions/3.3/Python three_py。至于您声明中的实际路径,我不知道这是否正确(我无法判断它是指向可执行文件还是目录)。
猜你喜欢
  • 1970-01-01
  • 2016-12-16
  • 2013-06-11
  • 1970-01-01
  • 2011-01-22
  • 2014-09-27
  • 2014-02-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多