如何让 Mercurial 找到 Python 的更新版本?

如何让 Mercurial 找到 Python 的更新版本?

我的系统是 RedHat 5 Linux,默认蟒蛇2.4安装。为了执行Mercurial1.81,我尝试将 Python 从2.42.6我以为我把它保存在了不同的目录中。我已将硬链接放在蟒蛇2.6Python。现在,我删除了它,并希望让python指向蟒蛇2.4以避免版本冲突。

这是我用来删除以下硬链接的命令Python蟒蛇2.6

find -xdev -samefile /usr/bin/python | xargs rm

然后我使用以下命令:

ln -s /usr/bin/python2.4 /usr/bin/python
ln -s /usr/bin/python2.6 /usr/local/bin/python
export PATH=/usr/local/bin:$PATH
Change first line of hg to #!/usr/bin/env python
PYTHONHOME=/usr/lib/python2.6
PYTHONPATH=/usr/lib/python2.6 

然后,当我输入时whereis python,结果如下。

/usr/bin/python2.4 
/usr/bin/python 
/usr/lib/python2.4 
/usr/lib/python2.6 
/usr/local/bin/python 
/usr/include/python2.4 
/usr/include/python2.6 
/usr/share/man/man1/python.1.gz

然后当我输入时which python,它指向usr/bin/python。当我输入时python -V,它显示python 2.4.3。它似乎指向2.4.3。然后,当我使用命令

python -c "import sys; print '\n' .join(sys.path)"

这显示了:

/usr/lib64/python24.zip
/usr/lib64/python2.4
/usr/lib64/python2.4/plat-linux2
/usr/lib64/python2.4/lib-tk
/usr/lib64/python2.4/lib-dynload
/usr/lib64/python2.4/site-packages
/usr/lib64/python2.4/site-packages/Numeric
/usr/lib64/python2.4/site-packages/gtk-2.0
/usr/lib/python2.4/site-packages

我试图找到蟒蛇2.6通过输入find / -name python2.6,它显示

/usr/include/python2.6
/usr/lib/python2.6
/usr/lib64/python2.6

以下是我的问题:

  1. 我怎样才能将上面的在线结果替换为蟒蛇2.6
  2. 为什么我找不到目录,例如/usr/bin/python2.6/usr/local/bin/python2.6?这是否意味着我安装了蟒蛇2.6错误地或意外地删除了目录?我输入的命令得到的结果有什么问题吗?
  3. 知道如何让系统执行吗蟒蛇2.6当我使用“hg push”时?
  4. 我应该安装蟒蛇2.6再次在 /usr/local/bin ?

答案1

  1. 安装虚拟环境虚拟环境包装器(easy_install 对我来说有效,但不要忘记将该行添加source /usr/local/bin/virtualenvwrapper.sh到你的 shell 启动脚本中,然后获取启动脚本以使用包装器)
  2. 运行mkvirtualenv -p /usr/lib/python2.6 ENVNAMEENVNAME无论你想给它起什么名字,也许都可以hg?)
  3. 添加workon ENVNAME到你的 shell 初始化脚本 (.profile、.*shrc 等)

现在您的系统仍可以使用 2.4,并且您的所有 shell 都将使用 2.6。请小心,因为如果其他系统安装的应用程序的依赖项不在您的虚拟环境中,这可能会中断对它们的调用。但是,由于您现在有了 pip,因此应该很容易pip install $WHATEVER_IS_MISSING(或运行deactivate命令退出虚拟环境,执行您的操作,然后workon返回到原来的位置)。

如果您发现 hg 实例由 shell 之外的进程启动(例如文件管理器集成?)那么我建议将这个小脚本放在您的路径上并配置这些进程来调用它。

#!/bin/bash # or whatever your shell is
workon ENVNAME
hg $*

(请注意,您可以通过在启动脚本中(ENVNAME)设置该行来禁用该提示)VIRTUAL_ENV_DISABLE_PROMPTworkon

相关内容