无法在OS X上为python3创建virtualenv

我在为
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中创建的,当我运行哪个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解释器定义的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
点赞