背景
默认情况下,Windows 不包含编译器,并且安装编译器(并可能配置 Python 以使用它)是一项非常复杂的任务,许多开发人员避免这样做。为此,许多具有二进制依赖关系的包可作为包含二进制文件的预编译 Windows 可执行文件使用。例如,有psycopg。
可执行文件是一个安装程序。执行时,它提供了一个图形界面,可通过注册表定位已安装的 Python 版本,并在全局 Python 安装中安装 Python 库和包含的二进制依赖项。
然而,这并不总是可取的。特别是在使用 virtualenv 时,开发人员不希望全局安装该库。他们希望将库安装在虚拟环境中。由于注册表中没有显示此环境,因此图形安装程序无法找到它。幸运的是,可以使用类似于以下的命令将库安装到虚拟环境:
C:\> C:\virtualenv\Scripts\activate.bat
(virtualenv) C:\> easy_install psycopg2-2.5.win32-py2.7-pg9.2.4-release.exe
请注意,无论 easy_install 是来自 setuptools 还是分发,这都有效。
实际问题
为什么这个命令有效?允许easy_install处理它的exe是什么?
我注意到 exe 似乎是某种 zip 文件。7-Zip可以打开浏览,easy_install可以处理的这些exe文件似乎有一个共同的文件结构。他们有一个名为 PLATLIB 的顶级目录,其中包含一个 egg-info 文件或文件夹和另一个(可能超过 1 个?)文件夹。这些 exe 是否只是 Python 鸡蛋,周围有某种可执行文件?我如何自己生产一个?(或者换一种说法,有没有一些标准的方法来产生这样的 exe?)
编辑
额外的问题:为什么pip不能处理这些文件?