为什么我不能通过手动*python setup.py install*来获得*pip install*的确切结果?

Dra*_*uan 7 python setuptools

我想通过setuptools找出 Python命名空间包背后的神话,这就是我测试的内容.

  • 做一个虚拟环境中通过virtualenv.
  • PyPI上查找命名空间包.
  • 安装该包pip install.
  • 检查已安装的文件层次结构

我玩的包是zope.interface,它在我的virtualenv上使用了以下文件层次结构:

~virenv/.../site-packages/zope.interface-3.8.0-py2.6-nspkg.pth
                         /zope.interface-3.8.0-py2.6.egg-info/
                         /zope/
                              /interface/
                                        /...
Run Code Online (Sandbox Code Playgroud)

一切都很好看,我喜欢zope.interface作为一个真正的命名空间包安装的方式(在文件夹zope下).

然后,我做了另一个测试,这是我想请求你帮助的问题.我下载了配衡的zope.interface源文件.我喜欢再次手动播放

  • 做一个虚拟环境中通过virtualenv.
  • zope.interface解压到某个地方.
  • 安装包python setup.py install.
  • 去检查站点包中发生了什么.

站点包看起来是这样的:

~virenv/../site-packages/zope.interface-...egg/
                                              /zope/
                                                   /__init__.py
                                                   /interface/
                                              /EGG-INFO/
Run Code Online (Sandbox Code Playgroud)

问:为什么我无法pip install通过手动获得准确的结果python setup.py install

var*_*tec 15

pipsetup.py内部使用.它只是传递了额外的选项.要重现pip正在做的事情,请执行

python setup.py install --single-version-externally-managed
Run Code Online (Sandbox Code Playgroud)

您还可以运行pip -vv以查看确切运行的命令.