【问题标题】:I just switched over to Python3 and I can't set it to be my default version of python我刚刚切换到 Python3,但无法将其设置为我的默认 python 版本
【发布时间】:2015-03-08 08:04:48
【问题描述】:

在为我的问题寻找解决方案时,所有建议都指向只是在我的 $PATH 变量前面加上那个 Python 版本的路径,但这无济于事。

这是我的 .bash_profile:

PATH="/usr/local/mysql/bin:/bin:/usr/bin:/usr/local/bin:~/bin"
export PATH="~/bin/python/anaconda:/opt/local/bin:/opt/local/sbin:$PATH"
export PATH="/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4:$PATH"

PYTHONPATH="/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4:${PYTHONPATH}

$ which python
/usr/bin/python

>>> import sys
>>> for p in sys.path:
...     print(p)
...

/Library/Frameworks/Python.framework/Versions/3.4/lib/python34.zip
/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4
/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/plat-darwin
/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/lib-dynload
/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages

【问题讨论】:

  • 使用python3 代替python?如果它有效但您仍想使用python,您可以alias python=python3。但不确定这样做的副作用。

标签: python version default


【解决方案1】:

几乎所有的 *nix 系统,如 MacOSX、大多数 Linux 发行版,都希望 python 指代 Python 2; python3 到 Python 3。如果你改变它,某些东西可能会严重损坏。因此,尽管PEP 394 谈到了python 的“默认”python 分发,并且所有Python 2 脚本都将在shebang 中使用python2,但这还不是事实。许多程序期望python 代表python2

此外,即使在这样的系统中,您仍然应该在脚本前面加上 python3,并使用该命令显式运行 Python 3 程序。只需在你的脚本前加上类似

#!/usr/bin/env python3

它应该可以工作。


如果您在执行 python 时对打开 python 2.7 感到困惑,请在您的 .bashrc 中添加别名:

alias python=python3

我也不确定你用PYTHON_PATH 做的事情是否明智; python 解释器将知道在哪里寻找它自己的库,而不需要这个hackery。

【讨论】:

  • 我已经为 python 设置了别名来运行 python3,但这不是问题。我的问题是将我的python版本的路径放在我的$PATH变量(或$PYTHONPATH?)的前面应该让which python显示该路径,但它没有。
  • 正如我所说:您不得使用which python 获取 Python 3 解释器
  • 此外,我的 PATH 中根本没有 /usr/bin/python
【解决方案2】:

解决我问题的建议的作者已经删除了他们的帖子,但是命令 sudo ln -s /usr/bin/python /Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4 成功了。

【讨论】:

  • 它有“技巧”,但这破坏系统使用的许多 Python 2 脚本或已安装应用程序的行为。在 python3 成为默认设置并在社区范围内做出从 py2 切换到 py3 的决定之前,请保留两个运行时。
  • 顺便说一句,您的ln 命令的参数设置错误。
  • 您应该考虑一下帖子被删除的原因。我在这三个平台上都使用 OS X、Linux 和 Windoze 以及 py2 和 py3。相信我,您不会想要两个名为 python 的程序,并且您不想覆盖默认值。
  • 好的,所以unlink /Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4?编辑:nvm,应该是unlink /usr/bin/python
  • 我认为您可能通过创建该链接而丢失了您的 python 2 - 您可能已经破坏了它。我个人将 /usr/bin/python3 链接到框架 python3.4。我也不喜欢 #!/usr/env 解决方案(这是另一个论点)。
猜你喜欢
  • 2017-06-18
  • 1970-01-01
  • 1970-01-01
  • 2014-01-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-29
相关资源
最近更新 更多