3

我刚刚在我们的服务器上安装了 Python 2.7,他们事先安装了 2.4。

在我构建了新版本之后,我的路径仍然指向旧版本的python,你知道一个简单的方法来改变它吗?

我没有 sudo 权限,也没有 root 访问权限。

4

3 回答 3

3

因为您在服务器上并且没有root权限,所以您最好的选择是使用virtualenv

构建 Python 2.7,例如,如下:

$ ./configure --prefix=~/mydir
$ make
$ make install

下载virtualen.py文件并运行:

$ ~/mydir/bin/python virtualenv.py my_environment

这将为您在my_environment目录中创建一个隔离的 Python 2.7 环境。

激活它运行source my_environment/bin/activate,就是这样。现在python可执行文件将是您的 Python 2.7。此外,您将pip安装并因此可以轻松地将任何其他库安装到您的环境中。

于 2012-11-21T10:16:30.923 回答
0

首先,您应该检查您~/.profile和您的 shell 配置文件(例如~/.bashrcbash)中是否存在包含违规路径的任何export $PATH=(或PYTHONPATH,取决于您所指的具体内容)指令。如果有,请更改它们并重新登录。那应该可以解决您的问题。

如果没有,请与您的管理员联系。如果这也没有帮助,您可以执行以下操作。在您的 shell 中,运行(可以用​​ 代替PATHPYTHONPATH具体取决于您的实际需要):

echo $PATH

复制输出并根据您的需要进行修改。然后打开另一个 shell并运行(记住替换):

export PATH="whatever you copied before"

检查一切是否正常(即您仍然可以调用您需要的所有应用程序并且您的路径已相应调整)。如果是这种情况,请将命令添加到您的~/.profile.

于 2012-11-21T09:48:35.287 回答
0

这个答案假设您的环境是 Linux、Unix 或类似的东西。

如果您的问题是PATH环境变量未指向正确的二进制文件,请修改它PATH:使其包含给定目录,例如~/bin,通过PATH=${HOME}/bin:${PATH}从您的配置文件之一执行,例如~/.profile. 确保创建该目录,并让它包含一个名为python指向正确版本 Python 的符号链接。

这对于具有硬编码路径的脚本没有帮助,例如以#!/usr/bin/python. 当您直接从命令行调用它们时,您可以简单地调用解释器(即python),将脚本的名称作为参数传递:python /path/to/script.py。你甚至可以使用你想要的 python 版本来代替它,即python2.7 /path/to/script.py.

您也可以将整个序列转换为~/bin目录中的脚本,例如~/bin/foo包含以下内容:

#!/bin/sh
exec ${HOME}/bin/python2.7 /usr/bin/foo

不要忘记chmod -x ~/bin/foo文件。你会得到一个可执行的 shell 脚本,它在你PATH的系统上安装的默认版本之前。然后,该脚本将使用非常特定的解释器调用该默认版本。所以现在你可以简单地输入短名称,并让你想要的 python 版本执行官方脚本。

其他一些脚本可能会尝试使用其绝对路径名执行给定的 python 脚本。在这种情况下,没有任何修改PATH会有所帮助。您必须修改相关脚本的第一行以读取例如#!/usr/bin/env python. 如果您无法控制这些脚本,那么您就有麻烦了,并且需要更高级的 hack 来调整系统以执行通常不会执行的操作。LD_PRELOAD想到了。

于 2012-11-21T09:49:30.617 回答