7

我喜欢通过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/
                                        /...

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

然后,我又做了一次测试,这就是我想请你帮忙的问题。我下载了去皮重的zope.interface源文件。我喜欢再次手动播放

  • 通过.制作虚拟环境virtualenv
  • zope.interface 解压到某个地方。
  • 通过 安装软件包python setup.py install
  • 去检查site-packages中发生了什么。

站点包如下所示:

~virenv/../site-packages/zope.interface-...egg/
                                              /zope/
                                                   /__init__.py
                                                   /interface/
                                              /EGG-INFO/

Q. 为什么我不能pip install手动得到准确的结果python setup.py install

4

2 回答 2

15

pip内部使用setup.py。它只是将附加选项传递给它。要重现pip正在执行的操作,请执行

python setup.py install --single-version-externally-managed

您还可以运行pip -vv以查看确切运行了哪些命令。

于 2012-04-16T12:08:56.807 回答
-8

Q. 为什么我无法通过手动 python setup.py install 获得 pip install 的确切结果?

因为pipsetup.py是两个不同的软件。

pip没有宣传为提供与 相同的行为setup.py,反之亦然。

如果您想要 的行为pip,请使用pip; 如果您想要 的行为setup.py,请使用setup.py.

于 2012-04-16T10:21:03.810 回答