Python 为什么easy_install可以与一些Windows二进制文件一起工作? 背景

Python 为什么easy_install可以与一些Windows二进制文件一起工作? 背景,python,windows,executable,easy-install,Python,Windows,Executable,Easy Install,默认情况下,Windows不包含编译器,安装编译器(或者配置Python以使用它)是一项非常复杂的任务,许多开发人员都避免这样做。为此,许多具有二进制依赖项的包可以作为包含二进制文件的预编译Windows可执行文件使用。例如,有 可执行文件是一个安装程序。执行时,它提供一个图形界面,通过注册表定位已安装的Python版本,并在全局Python安装中安装Python库和包含的二进制依赖项 然而,这并不总是可取的。特别是在使用virtualenv时,开发人员不希望全局安装库。他们希望在虚拟环境中安装

默认情况下,Windows不包含编译器,安装编译器(或者配置Python以使用它)是一项非常复杂的任务,许多开发人员都避免这样做。为此,许多具有二进制依赖项的包可以作为包含二进制文件的预编译Windows可执行文件使用。例如,有

可执行文件是一个安装程序。执行时,它提供一个图形界面,通过注册表定位已安装的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还是distribute,这都是有效的

实际问题 为什么这个命令有效?exe允许easy_install处理它的原因是什么

我注意到exe似乎是某种zip文件。7-Zip可以打开它进行浏览,这些easy_install可以处理的exe文件似乎有一个通用的文件结构。它们有一个名为PLATLIB的顶级目录,其中包含一个egg info文件或文件夹以及另一个(可能超过1?)文件夹。这些前男友是不是仅仅是围绕着某种可执行文件的Python蛋?我怎样才能自己制作一个呢?(或者换一种说法,有没有一些标准的方法来制作这样的前男友?)

编辑
附加问题:为什么pip不能处理这些文件?

ZIP格式由文件末尾的结构定义,在开始处留有空间存放额外数据。这个我认为这些文件在开始解压要安装的文件时有一个EXE有效负载。额外的注释:
pip
通常不支持二进制鸡蛋,只支持源发行版。使用
--egg
选项安装带有
pip
的egg。pip将支持一种称为wheel的新二进制格式。@MartijnPieters我尝试将
--egg
与这些二进制文件之一一起使用。我只是犯了一些错误。你是说非二进制鸡蛋吗?@jpmc26:可能是
pip
即使使用
--egg
也无法处理这些鸡蛋。