我使用了来自http://www.python.org/download的安装程序。安装似乎成功,它删除了我的Applications目录中的Python 3.3文件夹。我运行了它包含的“Update Shell Profile.command”脚本,并将/Library/Frameworks/Python.framework/Versions/3.3/
添加到我的路径中。然而,该目录中的Python
版本似乎是2.7.5。
/Library/Frameworks/Python.framework/Versions/3.3 ls
Headers Python Resources bin include lib share
/Library/Frameworks/Python.framework/Versions/3.3 Python --version
Python 2.7.5
此外,ls /usr/bin | grep python
显示:
python
python-config
python2.5
python2.5-config
python2.6
python2.6-config
python2.7
python2.7-config
pythonw
pythonw2.5
pythonw2.6
pythonw2.7
我错过了什么?
答案 0 :(得分:4)
这里有很多问题。
首先,您不应该运行框架的可执行文件Python
。框架可执行文件并不意味着可以运行,而且这个实际上只是巧合而已。
具有要运行的程序的框架将它们放在某个地方的bin
目录中 - 在框架之外(如/usr/local/bin
)或在其内部(如/Library/Frameworks/Foo.framework/Versions/X.Y/bin
)。默认情况下,Python 3.3执行后者。
bin
目录中的程序都是小写的,不是大写的,所以没有Python
可以运行。
接下来,在Mac上以及除Windows之外的世界上几乎所有其他平台上,当前的工作目录都不是PATH
的一部分。因此,当您键入Python --version
时,会在Python
的某处找到PATH
。您碰巧在当前目录中拥有该名称的可执行文件这一事实并不意味着什么(除了它让您感到困惑)。如果你真的想要运行该文件(但是你真的没有),你必须改为编写./Python
。
此外,首先cd
进入框架目录是没有充分理由的。当然,你可以从那里运行你想要的文件,并使用相应的相对路径名:bin/python3
,但是你不想这样做。
接下来,在安装Python 3.3之前,您可能正在使用已运行的shell。可以使用Update Shell Profile.command
脚本将Python 3.3添加到PATH
以用于所有未来的shell,或者使用PATH
生成新的shell,但无论哪种方式都不会影响任何现有的 shell。要解决这个问题,你只需要开始一个新的shell。
下一步:
ls /usr/bin | grep python
显示:
/usr/bin
目录仅适用于属于操作系统的程序。您自己安装的程序将放在/usr/local/bin
或PATH的其他位置。 Python安装程序有一个选项(虽然它可能是隐藏的,我不记得了......)将启动器放在/usr/local/bin
中。它还有一个选项 - 您选择 - 将其框架bin
目录放在PATH
上。但不管怎样,它永远不会在/usr/bin
中放任何东西。
最后,即使在安装Python 3.3之后,默认的python
仍然是2.7。 python3
和python3.3
将为3.3,但python
和python2.7
将为2.7。有关基本原理,请参阅PEP 394 — The "python" Command on Unix-Like Systems。但是简短的版本是,各种代码依赖于Python 2.7并且与可能安装在系统上的3.3不兼容,并且您不希望所有代码都停止工作。
所以,把它们放在一起:
python3 --version
。答案 1 :(得分:0)
您可能需要考虑使用virtualenv:
$ /Library/Frameworks/Python.framework/Versions/3.3/bin/python3 -m venv ~/myvenv
$ source ~/myvenv/bin/activate
(myvenv) $ curl https://bootstrap.pypa.io/get-pip.py | python
(myvenv) $ deactivate
$ source ~/myvenv/bin/activate