如果我使用Python 2.6安装多个软件包(例如使用easy_install
)然后我想升级到Python 2.7,有没有办法升级Python然后自动“导入”所有这些已安装的软件包?或者他们必须重新安装?
两个相关的问题:(1)如果一个软件包安装在Python 2.6软件包目录中,将它导入到新的Python的PYTHONPATH
中是否合法,如Python 2.7,或者所有软件包必须是用Python 2.7重新安装? (2)如果我使用easy_install
,我如何告诉它使用较新的Python?例如。 2.7而不是2.6?或者我应该使用Python 2.7重新安装easy_install
来执行此操作?感谢。
答案 0 :(得分: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
结束,所以你要做的就是猜测包是否在PyPI上被命名为foo-bar
或foo_bar
,通常即使你猜错了,{ {1}}或easy_install
无论如何都会得到正确的结果。所以,你不能完全自动化它,但你可以接近。
但是,不管怎样,你确实需要重新安装。任何需要C扩展代码的东西都必须重新编译。纯Python包可能不需要更改,但它们可能,并且您比抱歉更安全。此外,如果您尝试复制某些内容而不是其他内容,那么您将会对依赖项进行大量混乱。
不要这样做;如上所述,重新安装它们。(1)如果一个软件包安装在Python 2.6软件包目录中,将它导入到较新Python的PYTHONPATH(如Python 2.7)中是否合法,还是必须使用Python 2.7重新安装所有软件包?
(2)如果我使用easy_install,我怎么能告诉它使用更新的Python?例如。 2.7而不是2.6?或者我应该使用Python 2.7重新安装easy_install来执行此操作?感谢。
您需要2.7 pip
。您通常可以使用2.7 easy_install
和2.6运行,例如easy_install
,但反过来并不能保证正常工作。
无论如何你也不想这样做。如果你想要并行使用两个版本的Python,你需要两个版本的python2.6 $(which easy_install)
- 通常你希望最终得到easy_install
和easy_install-2.6
,easy_install-2.7
作为符号链接到无论你认为哪一个"主要"蟒。