嘿伙计们,我有一个将python从2.4升级到2.6的问题:
我有CentOS 5(完整版)
它有python 2.4,位于/usr/lib/python2.4/
其他模块位于/usr/lib/python2.4/site-packages/
我从/usr/local/lib/python2.6/的源代码构建了python 2.6
我已将默认python设置为python2.6
现在2.4的旧模块不在pythonpath中,并且是"lost"
特别是,百胜被打破("no module named yum")
那么将模块迁移/安装到python2.6的正确方法是什么?
4 回答
它们没有坏掉,根本就没有安装 . 解决方案是在2.6下安装它们 . 但首先我们应该看看你是否应该这样做......
是的,Python将在安装时将python命令替换为安装的版本(除非您使用--alt-install运行它) . 你没有准确说明你的问题是什么,所以我猜 . 你的问题是许多使用Python的本地命令现在都失败了,因为它们是用Python 2.6执行的,而不是用Python 2.4执行的 . 那是对的吗?
如果是这样,那么只需删除/ usr / local / bin / python,并确保/ usr / bin / python是/usr/bin/python2.4的符号链接 . 然后你必须输入python2.6才能运行python2,6,但是's OK. That'是最好的方法 . 然后你只需要在2.6中安装包 you .
但是如果我猜错了,你真的需要在2.6下安装所有这些软件包,那么不要太担心 . 首先,安装setuptools . 它包含一个easy_install脚本,然后您可以使用它安装模块
它将从pypi.python.org下载该模块并安装它 . 它还将安装任何依赖的模块 . easy_install可以安装任何使用distutils作为安装程序的模块,而不是很多 . 这将使安装90%的模块变得轻而易举 .
如果模块有一个C组件,它将编译它,然后你也需要库头,这将是更多的工作,你可以做的就是安装标准的CentOS方式 .
你不应该100%确定),所以这可能有用,但任何使用C的模块都会破坏 . 而其他版本的Python也会有不兼容的.pyc文件 . 而且我敢肯定,如果你这样做,大多数Python人都不会帮助你 . ;-)
一般来说,我也试着保持系统python“干净”,即 . 我没有安装任何没有安装包装工具的东西 . 相反,我使用virtualenv或buildout让每个应用程序都有自己的python路径,它的依赖关系存在 . 所以我拥有的每一个项目基本上都有自己的一套库 . 这样变得容易了 .
有几种选择......
如果模块将在Python 2.6下运行,您只需创建从2.6 site-packages目录到2.4 site-packages目录的符号链接 .
如果它们不能在2.6下运行,那么您可能需要针对2.6重新编译它们,或者安装它们的最新版本 . 只需确保在调用
"python setup.py"
时使用2.6...
如果遇到其他挑战,您可能希望在serverfault.com上发布此内容 .
某些Python库仍然无法访问,因为Python 2.6
site-packages
更改为dist-packages
.在这种情况下,唯一的方法是将站点包中生成的所有内容(例如通过
make install
)移动到dist-packages并创建sym-link .easy_install很好,但安装模块的方法很简单,只需:
解包模块源到某个目录
类型"python setup.py install"
当然你应该用必需的安装python解释器版本来做这件事;检查类型:
python -V