osx:为终端中的文件设置默认的python?

osx:为终端中的文件设置默认的python?

如何设置$ django-admin.py manage.py startproject"在 bash shell 中运行没有“python”关键字的 py 文件的默认 python?

答案1

这取决于 .py 文件的第一行(“shebang 行”)。通常你会看到类似这样的内容:

#!/usr/bin/python2.6

在这种情况下,脚本作为独立可执行文件运行时将使用 /usr/bin/python2.6 处的 Python 版本运行。为什么是这个版本的 Python?它可能已被硬编码到脚本中,但更可能是在安装脚本时自动设置的。例如,当您安装 Django 时,您可以:

  1. 下载源代码并运行python setup.py- 在这种情况下,脚本将被安装以使用您运行 setup.py 的 python 版本运行
  2. 运行easy_install django- 在这种情况下,脚本将使用 easy_install(也是 Python 脚本)使用的相同版本的 python 进行安装。(这就是为什么您经常会看到列出多个版本的 easy_install,例如,我有 easy_install-2.5、easy_install-2.6 和 easy-install-2.7。当我直接输入时,easy_install它使用 easy_install-2.6。)
  3. Ran pip install django– 与 easy_install 基本相同。

要使用其他版本的 Python 运行该脚本,您可以更改 shebang 行(例如改为#!/usr/bin/python2.7)或在命令行上指定您的 python(例如/path/to/python2.7 /path/to/django-admin.py args)。但请注意,诸如 django-admin.py 之类的脚本只是一组更大的库(在本例中为 Django)的前端,并且这些库将默认安装在特定版本的 Python 的库位置中。例如,如果 django-admin.py 的第一行表明它在 Python 2.6 下运行,则 Django 库将安装在特定于 Python 2.6 的库目录中,并且默认情况下它们将不可用于 Python 2.7。

在其他情况下,你会看到如下行:

#!/usr/bin/env python

在这种情况下,脚本将使用您python在命令行中输入时获得的任何版本的 Python 运行。您将能够更改具有此类 shebang 行的脚本所具有的 python 版本,例如,通过更改 PATH 环境变量,以便您的 shell 可以在不同的目录中找到 python。

无论哪种情况,你都应该考虑看看虚拟环境包装器,扩展至虚拟环境。它允许您快速轻松地为 Python 项目设置多个虚拟环境,每个虚拟环境都有自己的默认 Python 版本和库。

更新:既然你的问题提到了 OS X,那么值得一提的是,在 OS X 中,/usr/bin/python 运行的是用户可配置的 Python 版本。请参阅OS X Python 手册页了解详情。

答案2

找到长版本这里:

简而言之:

defaults write com.apple.versioner.python Version x.x

/usr/bin/python -V
-> Python x.x.y

在运行 CLI 会话时快速切换

export VERSIONER_PYTHON_VERSION=2.5
/usr/bin/python -V
-> Python 2.5.6

恢复默认standard python

unset VERSIONER_PYTHON_VERSION

相关内容