【问题标题】:Macports select default Python interpreter for executing scripts? [closed]Macports 选择默认的 Python 解释器来执行脚本? [关闭]
【发布时间】:2011-10-20 02:30:49
【问题描述】:

我用了python_select,好像并没有改变执行脚本的默认python,比如django-admin.py runserver(前面没有python)。

我该如何改变?

【问题讨论】:

  • 我认为这可能会更好地放在 SuperUser...
  • 它可能会被 .py 文件中的 #! 第一行覆盖。
  • 是的,确实可以通过#! 覆盖它,但 OP 的问题专门针对默认 Python 解释器。

标签: python macos macports


【解决方案1】:

有/usr/bin/python,它在路径中通常比MacPort 的二进制文件夹(/opt/local/bin/python)更早(具有更高的优先级)。 python_select 脚本仅更改 /opt/local/bin/python,因此您必须确保路径上没有其他 python 二进制文件优先于它。

解决方案(以 root 身份):

mv /usr/bin/python /usr/bin/python.orig
ln -s /opt/local/bin/python /usr/bin/python
port select --set python python26

确保将第三行中的 python26 替换为您想要的 Python 版本。

几天前它在 MacPort 2.0.0 上对我有用。如果您有较旧的 MacPorts 库,则应升级它或使用 python_select 而不是 port select --set python。

【讨论】:

  • 一种更简单、更安全的方法是将 /opt/local/bin 更早地放在 PATH 中。要做到这一点,您可以在 bash shell 中执行以下操作:export PATH=/opt/local/bin:$PATH 或编辑 ~/.bash_profile 并将该行添加到文件末尾。修改系统的 Python 通常是一个坏主意,就好像你破坏它一样,你可能会破坏 Mac 上使用系统 Python 的任何实用程序或工具。编辑:格式化。
  • @MickT:我按照你的建议做了,因为我认为这是一种更好的方法。我可以验证/opt/local/bin 在我的PATH 变量的顶部,但是当我输入which python 时,它会给出一个以/usr/local/bin/python 开头的列表。知道为什么which 给出的命令与PATH 不同吗?
  • @jvriesem 如果/usr/local/bin/ 在您的路径中是第一个,那么/usr/local/bin/python 将是第一个找到的Python。我是不是误会了什么?如果是,请发布以下输出:echo $PATH
  • 我仍在将此解决方案应用于 OS X 10.11 El Capitan,但我必须禁用 SIP 才能使其正常工作。不确定 Apple 将允许我们禁用此保护多长时间,这并不理想。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-06-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多