首页 文章

在CentOS上从Python2.4过渡到Python2.6 . 模块迁移问题

提问于
浏览
3

嘿伙计们,我有一个将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 回答

  • 0

    它们没有坏掉,根本就没有安装 . 解决方案是在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脚本,然后您可以使用它安装模块

    easy_install <modulename>
    

    它将从pypi.python.org下载该模块并安装它 . 它还将安装任何依赖的模块 . easy_install可以安装任何使用distutils作为安装程序的模块,而不是很多 . 这将使安装90%的模块变得轻而易举 .

    如果模块有一个C组件,它将编译它,然后你也需要库头,这将是更多的工作,你可以做的就是安装标准的CentOS方式 .

    你不应该100%确定),所以这可能有用,但任何使用C的模块都会破坏 . 而其他版本的Python也会有不兼容的.pyc文件 . 而且我敢肯定,如果你这样做,大多数Python人都不会帮助你 . ;-)

    一般来说,我也试着保持系统python“干净”,即 . 我没有安装任何没有安装包装工具的东西 . 相反,我使用virtualenv或buildout让每个应用程序都有自己的python路径,它的依赖关系存在 . 所以我拥有的每一个项目基本上都有自己的一套库 . 这样变得容易了 .

  • 0

    有几种选择......

    • 如果模块将在Python 2.6下运行,您只需创建从2.6 site-packages目录到2.4 site-packages目录的符号链接 .

    • 如果它们不能在2.6下运行,那么您可能需要针对2.6重新编译它们,或者安装它们的最新版本 . 只需确保在调用 "python setup.py" 时使用2.6

    ...

    如果遇到其他挑战,您可能希望在serverfault.com上发布此内容 .

  • 3

    某些Python库仍然无法访问,因为Python 2.6 site-packages 更改为 dist-packages .

    在这种情况下,唯一的方法是将站点包中生成的所有内容(例如通过 make install )移动到dist-packages并创建sym-link .

  • 0

    easy_install很好,但安装模块的方法很简单,只需:

    • 解包模块源到某个目录

    • 类型"python setup.py install"

    当然你应该用必需的安装python解释器版本来做这件事;检查类型:

    python -V

相关问题