我想通过 setuptools 找出Python命名空间包背后的神话,这就是我测试的内容。
virtualenv
制作虚拟环境。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
制作虚拟环境。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
的确切结果?
答案 0 :(得分:15)
pip
在内部使用setup.py
。它只是传递了额外的选项。要重现pip
正在执行的操作,请执行
python setup.py install --single-version-externally-managed
您还可以运行pip -vv
以确切了解运行的命令。
答案 1 :(得分:-8)
Q值。为什么我无法通过手动获得pip安装的确切结果 python setup.py install?
因为pip
和setup.py
是两个不同的软件。
pip
未宣传为向setup.py
提供相同的行为,反之亦然。
如果您想要pip
的行为,请使用pip
;如果您想要setup.py
的行为,请使用setup.py
。