强制 shell 脚本执行特定的 python 版本

强制 shell 脚本执行特定的 python 版本

更新。

不幸的是,更改别名不起作用。我已将别名更改为 alias python='/usr/bin/python2.7',但 shell 脚本仍然运行 2.4.3 中的 python 脚本。

Muru - 我使用 PYTHONPATH 指向 python 路径。但是正如你所说,这可能不正确。是否有可用于指向特定 python 可执行文件的 PYTHONPATH 版本?

根据要求,Shell 脚本如下。

cd ../../../..

export BREVE_CLASS_PATH=/home/user/breve_2.7.2/lib/classes
export PYTHONPATH=/usr/bin/python2.7


cd /home/user/breve_2.7.2

./bin/breve /home/user/breve_2.7.2/demos/Getting-Started/RandomWalker_version.py

我正在运行一个shell脚本,该脚本在某个程序中运行一个python脚本。

我的问题是 Python 脚本是在 Python 2.4 中启动的,而我需要它在 Python 2.7 中运行。在 Shell 脚本中,我添加了以下行以尝试强制使用 Python2.7。

export PYTHONPATH=/usr/bin/python2.7

但是,当 python 脚本打印其使用的版本时,我得到的是 python 2.4.3。我这样做对吗?

我该如何继续?

答案1

由于您安装了多个 python 版本,并且想要确定哪个 python 作为默认版本,因此您应该使用update-alternatives维护符号链接的命令来确定默认命令。

首先运行这个:

update-alternatives --list python

如果结果是:

update-alternatives: error: no alternatives for python

然后,您应该使用update-alternatives--install拥有的各种 Python 版本的替代方案(如果该--list选项导致列出替代方案,请直接跳转到--config后面提到的选项)。该--install选项的参数是组、目标和优先级,其中优先级数字越大,优先级越高,组意味着小路该命令将给出一组备选方案:

update-alternatives --install /usr/bin/python python /usr/bin/python2.4 1
update-alternatives --install /usr/bin/python python /usr/bin/python2.7 2

此后,python 2.7 将成为您的默认 python,因为它具有更高的优先级,并且您安装了两个 python 版本作为备选(如果您还安装了其他版本,则安装的版本更多)。请记住,python 2.7 现在是所有程序的默认 python。

现在,您可以使用 --list 参数再次列出某个组的已安装替代方案:

update-alternatives --list python

/usr/bin/python2.4
/usr/bin/python2.7

现在,你可以使用以下命令在替代方案之间切换:

update-alternatives --config python

输入选择编号,您就可以将所需的 Python 版本用作默认 Python。

使用手册页来阅读有关 update-alternatives 的更多信息:

man update-alternatives

答案2

为什么不直接做

python /home/user/breve_2.7.2/demos/Getting-Started/RandomWalker_version.py 

在最后一行。这应该可以解决问题(当 shebang 正确时)。

相关内容