【问题标题】:How to upgrade Python along with installed packages?如何升级 Python 以及已安装的软件包?
【发布时间】:2012-12-29 00:41:46
【问题描述】:

如果我用 Python 2.6 安装了几个包(例如,使用 easy_install),然后我想升级到 Python 2.7,有没有办法升级 Python,然后自动“导入”所有已安装的包?还是必须重新安装?

两个相关问题:(1)如果一个包安装在 Python 2.6 包目录中,将其导入到较新的 Python(如 Python 2.7)的PYTHONPATH 是否合法,或者必须重新安装所有包蟒蛇2.7? (2) 如果我使用easy_install,我如何告诉它使用较新的Python?例如。 2.7而不是2.6?还是我应该使用 Python 2.7 重新安装 easy_install 来执行此操作?谢谢。

【问题讨论】:

  • 欢迎来到 1500 俱乐部!您现在可以创建新标签。意外地。使用自动完成选择器时,请确保您通过标签/输入/点击进入所需的标签。否则,错字就会发生。

标签: python package setuptools distutils distutils2


【解决方案1】:

首先,这是您想使用pip 而不是easy_install 的众多原因之一。 (你仍然需要easy_install 来获取pip 本身,但除此之外,不要再碰它了。)如果你使用过pip,你可以这样做:

pip freeze > modules.dump

这会为您提供已安装的所有模块的列表及其版本号。大多数情况下,您只需获取模块列表 (line.split('==')[0] for line in f) 并将其传递给 pip install

但这是供将来参考。今天,您必须通过查看site-packages 目录自己拼凑。幸运的是,很多东西都会以 foo_bar-1.2.3.4-blah-blah.egg 结尾,所以你所要做的就是在 PyPI 中猜测包的名称是 foo-bar 还是 foo_bar,通常即使你猜错了,easy_installpip无论如何都会得到正确的东西。所以,你不能完全自动化它,但你可以接近。

但是,是的,无论你怎么做,你都需要重新安装。任何需要 C 扩展代码的东西都必须重新编译。纯 Python 包可能不需要更改,但它们可能需要更改,而且您总比抱歉更安全。此外,如果您尝试复制某些内容而不复制其他内容,则会将依赖项弄得一团糟。

(1) 如果包安装在 Python 2.6 包目录中,将其导入到较新的 Python(如 Python 2.7)的 PYTHONPATH 是否合法,还是必须使用 Python 2.7 重新安装所有包?

不要那样做;如上所述,重新安装它们。

(2) 如果我使用easy_install,我如何告诉它使用较新的Python?例如。 2.7而不是2.6?还是我应该使用 Python 2.7 重新安装 easy_install 来执行此操作?谢谢。

您需要 2.7 easy_install。您通常可以通过运行将 2.7 easy_install 与 2.6 一起使用,例如 python2.6 $(which easy_install),但不能保证反之亦然。

而且你也不想这样做。如果你想要两个版本的 Python 并行,你想要两个版本的 easy_install——通常你想要以 easy_install-2.6easy_install-2.7 结束,easy_install 作为你认为你的“主要”的任何一个的符号链接蟒蛇。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-08
    相关资源
    最近更新 更多