4

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 に戻っているようです。がアクティブな$PATHときは次のとおりです。virtualenv

 /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

私にとっては、これはもう少し不可解です。

4

1 に答える 1

2

インタープリター用に定義されたシェル エイリアスがある場合はpython、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

virtualenv に python3 が選択されていても、報告された python バージョンは 2.7.4 であることに注意してください。次のコマンドを使用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
于 2013-09-24T13:52:18.573 に答える