4

我已经重新安装了我的操作系统(从 Windows XP 移动到 Windows 7)。我已经重新安装了 Python 2.7。

但是我在旧环境中安装了很多软件包。(Django、sciPy、jinja2、matplotlib、numpy、networkx,仅举一个视图)

我的旧 Python 安装仍然在数据分区上,所以我想知道是否可以将旧 Python 库文件夹复制粘贴到新安装上?还是我需要重新安装每个软件包?

软件包是否在注册表、系统变量或类似物中保留任何信息?

它取决于包吗?

4

2 回答 2

2

这就是您必须能够对项目进行布局的地方,因此需要专门的工具。

通常,Python 包不会做诸如处理注册表之类的奇怪事情(除非它们是通过 MSI 安装程序打包的)。问题可能从包含 C 扩展的包开始,因此迁移到另一个版本的操作系统或从 32 位架构到 64 位架构将需要重新编译/重建这些。因此,最好将所有软件包重新安装到新系统,如下所述。

您的需求可能会有所不同,但您绝对必须选择构建环境的方式。如果您没有并且计划拥有大量项目,您可以考虑以下第一种方法,第二种方法更有可能为不同项目或同一项目的不同版本设置开发环境。

  1. 全局环境(您系统中的 Python 安装以及已安装的软件包)。

    在这里你可以考虑使用pip。在这种情况下,您的项目可以拥有包含项目所需的所有包的需求文件。基本上,需求文件是一个包含包名称的文本文件(在 PyPI 及其版本上)。

  2. 隔离环境。它可以使用特殊工具或专门组织的路径来实现。

    在这里 pip 可以与virtualenv优雅地结合起来。这种方式被很多开发者强烈推荐(我必须提醒一下,即将发布的 Python 3.3 包含 virtualenv 作为标准库的一部分)。这种方法假设使用自己的 Python 解释器实例和已安装的包创建虚拟 shell。

    实现隔离环境的另一种流行工具称为 buildout。它将您的项目源代码和依赖项布置在一个路径中,因此您可以实现与 virtualenv 创建相同的效果。buildout 的巨大优势在于它建立在可插拔配方(实现不同常见项目部署任务的代码片段)的想法之上,并且互联网上有数百个稳定可靠的配方。

    virtualenv 和 buildout 都可以帮助您在安装依赖项时消除头痛,并解决同一包的不同版本保存在一台机器上的问题。

选择你的命运...

于 2012-08-28T21:06:03.810 回答
1

对这个问题的简短回答是“不”,因为包可以在安装时执行任意代码,并在系统上的任何地方做他们想做的任何事情。

只需重新安装所有这些。

于 2012-08-28T22:32:23.037 回答