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

时间:2012-04-16 10:18:07

标签: 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/
                                        /...

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

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

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

site-packages 如下所示:

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

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

2 个答案:

答案 0 :(得分:15)

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

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

您还可以运行pip -vv以确切了解运行的命令。

答案 1 :(得分:-8)

  

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

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

pip未宣传为向setup.py提供相同的行为,反之亦然。

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