在Python版本之间切换为非root用户

时间:2012-11-21 09:44:21

标签: python

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

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

我没有sudo权限也没有root权限。

3 个答案:

答案 0 :(得分: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,因此可以轻松地将任何其他库安装到您的环境中。

答案 1 :(得分:0)

首先,对于任何~/.profile(或~/.bashrc,您应检查export $PATH=和您的shell配置文件(例如PYTHONPATH是否为bash),具体取决于您的身份完全引用包含违规路径的指令。如果有的话,改变它们并重新登录。这应该可以解决你的问题。

如果没有,请与您的管理员联系。如果这也没有帮助,您可以执行以下操作。在你的shell中,运行(可以用​​PATH代替PYTHONPATH,具体取决于你真正需要的东西:

echo $PATH

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

export PATH="whatever you copied before"

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

答案 2 :(得分: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。如果您无法控制这些脚本,那么您就会遇到麻烦,需要更高级的黑客来调整系统,使其做一些通常无法做到的事情。想到LD_PRELOAD