如何让python_select适用于'$>python'命令?

2 投票
3 回答
4044 浏览
提问于 2025-04-15 16:12

我在我的电脑上用macports安装了几个不同版本的Python,同时苹果自带的Python 2.6也在运行。现在我需要运行一个程序,这个程序需要在Python中支持MySQLdb这个包,而这个包是安装在我通过macports安装的Python里的。可是程序告诉我没有安装MySQLdb,所以我猜是苹果的Python在为这个程序工作。

我找了一些帮助,发现可以用python_select来切换不同的Python版本。但是在我输入了这个命令后

$>sudo python_select python25

它告诉我选择了“python25”这个版本的Python,但当我输入

$>python

时,还是启动了苹果的Python 2.6。

我的问题是,怎么才能让python25(那个有MySQLdb的版本)为这个程序工作,而不是苹果的Python呢?

还有一个重要的事情是,这个程序不是一个.py文件,需要在运行之前先编译。那么我需要重新安装这个程序吗?我的Mac OS版本是Snow Leopard 10.6。

任何回答都非常感谢。

3 个回答

0

在Mac上,'python'其实只是一个链接。你可以输入'which python'来查看这个链接指向哪里,然后用'cd'命令进入这个链接所在的文件夹,接着输入'ls -a py*'来查看所有以'py'开头的文件。这样你就能看到'python'链接指向的具体位置。如果你想让这个'python'指向你安装的其他版本,只需要把它链接到正确的版本上就可以了。

0

首先,我对Mac不太了解,因为我从来没用过。

但是在Linux系统中,当我输入 whereis python 时,

它会显示类似 /usr/bin/python /usr/local/bin/python 这样的路径。

在我的 .bashrc 文件里,我只需要输入 export PATH=/usr/local/bin:/usr/bin:$PATH,这样就可以让 /usr/local/bin 的优先级更高。

或者你也可以像这样运行:

/usr/bin/python yourpython.py

或者:

/usr/local/bin/python yourpython.py 

这取决于你安装Python的位置。

这只是我的一点建议。如果我的回答没能帮到你,我很抱歉。

7

默认情况下,MacPorts会把用户程序(或者链接到这些程序)安装在 /opt/local/bin 这个地方。MacPorts 的 select_python 命令用来选择哪个 Python 版本链接到 /opt/local/bin/python。这个命令不会影响(也不应该影响)苹果在 /usr/bin 目录下安装的内容,那里的 pythonpython2.x 是苹果自带的命令。

如果你想使用 MacPorts 的 python2.5,你需要确保 /opt/local/bin 在你的 shell $PATH 中排在 /usr/bin 前面(你可以通过修改你的 .bash_profile 或其他 shell 初始化脚本来做到这一点),或者你也可以直接用绝对路径来调用你想要的 Python:

$ /usr/bin/python your-program.py

使用苹果自带的默认 Python;

$ /opt/local/bin/python your-program.py

使用通过 python_select 选择的版本,或者:

$ /opt/local/bin/python2.5 your-program.py

明确选择 MacPorts 的 2.5 版本。

编辑:

要修改你的搜索路径以使用 MacPorts,可以在 .bash_profile 中添加这一行:

export PATH=/opt/local/bin:/opt/local/sbin:$PATH

撰写回答