- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
如果我用 Python 2.6 安装了几个包(例如使用 easy_install
)然后我想升级到 Python 2.7,有没有办法升级 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
来执行此操作?谢谢。
最佳答案
首先,这是您要使用 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-bar
或 foo_bar
在 PyPI,通常即使你猜错了,easy_install
或 pip
无论如何都会得到正确的东西。因此,您不能完全使其自动化,但您可以接近。
但是,是的,无论您如何操作,都需要重新安装。任何需要 C 扩展代码的东西都必须重新编译。纯 Python 包可能不需要更改,但它们可能需要更改,安全总比后悔好。此外,如果您尝试复制一些东西而不是其他东西,您将会把您的依赖关系搞得一团糟。
(1) if a package is installed in a Python 2.6 packages directory, is it legitimate to import it into the PYTHONPATH of a newer Python, like Python 2.7, or must all the packages be reinstalled with Python 2.7?
不要那样做;如上所述重新安装它们。
(2) if I use easy_install, how can I tell it to use the newer Python? E.g. 2.7 instead of 2.6? Or should I just reinstall easy_install using Python 2.7 to do this? thanks.
您需要 2.7 easy_install
.您通常可以使用 2.7 easy_install
通过运行 2.6,例如 python2.6 $(which easy_install)
,但反之亦然。
无论如何你都不想那样做。如果你想同时使用两个版本的 Python,你需要两个版本的 easy_install
——通常你想以 easy_install-2.6
结尾和 easy_install-2.7
, 与 easy_install
作为您认为是“主要”python 的任何一个的符号链接(symbolic link)。
关于python - 如何将 Python 与已安装的软件包一起升级?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14328882/
我是一名优秀的程序员,十分优秀!