2

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

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

4

1 回答 1

3

首先,这是您要使用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以 . 所以,你不能完全自动化它,但你可以接近。foo-barfoo_bareasy_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。您通常可以easy_install通过运行来使用 2.7 和 2.6,例如,python2.6 $(which easy_install)但不保证反过来也能正常工作。

而且你无论如何都不想这样做。如果你想要两个版本的 Python 并行,你想要两个版本的 -easy_install通常你想以easy_install-2.6and结尾easy_install-2.7easy_install作为你认为你的“主要”python 的任何一个的符号链接。

于 2013-01-15T00:01:07.633 回答