Gibt es einen signifikanten Unterschied zwischen
pip install -e /path/to/mypackage
und die setuptools variante?
python /path/to/mypackage/setup.py develop
Gibt es einen signifikanten Unterschied zwischen
pip install -e /path/to/mypackage
und die setuptools variante?
python /path/to/mypackage/setup.py develop
Antworten:
Vermeiden Sie es, setup.py
direkt anzurufen. Dadurch wird pip nicht ordnungsgemäß mitgeteilt, dass Sie Ihr Paket installiert haben.
Mit pip install -e
:
Bei lokalen Projekten wird das Verzeichnis "SomeProject.egg-info" relativ zum Projektpfad erstellt. Dies ist ein Vorteil gegenüber der einfachen Verwendung
setup.py develop
, bei der die "Ei-Info" direkt relativ zum aktuellen Arbeitsverzeichnis erstellt wird.
Mehr: docs
Lesen Sie auch die Setuptools docs .
Ein weiterer Unterschied: pip install -e
verwendet das Rad, während
python setup.py develop
es nicht verwendet wird.
Mit install
können Sie das gleiche Verhalten erzielen, indem Sie verwenden
pip install -e /path/to/package --no-use-wheel
Weitere Infos zu Rädern: Python-Räder
--no-use-wheel
DEPRECATED für--no-binary :all:
Ein weiterer Unterschied, der begünstigt werden kann, pip install -e
besteht darin, dass, wenn Ihr Projekt Abhängigkeiten in install_requires
in hat setup.py
, pip install -e .
Abhängigkeiten mit pip installiert werden, während python setup.py develop
mit installiert werden können easy_install
, und Probleme bezüglich 'ei-info' verursachen können, wie oben erwähnt. Bei install-requires
Verwendung dependency_links
mit benutzerdefinierten Git-URLs mit angehängten Eikennungen kann dies besonders ärgerlich sein.
pip install -e .
, wird im Wesentlichen ein Symlink im entsprechenden Python-Site-Packages-Verzeichnis erstellt, der auf Ihre Arbeitskopie verweist. Wenn Codeänderungen an dieser Arbeitskopie vorgenommen werden, wird diese sofort in der "installierten" Version angezeigt, sodass Sie die Installationsbefehle nicht erneut ausführen müssen. Dies ist in erster Linie nützlich für die Entwicklung in einem Repository, das ein installierbares Paket darstellt, kann aber auch nützlich sein, um beispielsweise eine Sammlung von Modulen mit nur absoluten Importen usw. zu
Ein weiterer Unterschied: Wenn Sie python setup.py develop
eine Version ausführen , die als Vorabversion betrachtet wird (möglicherweise, weil Sie sie von einem Git-Klon ausführen, wenn Sie eine Version nicht ausgecheckt haben), aktivieren Sie die Installation von Vorabversionen Ihrer Abhängigkeiten . Auf der anderen Seite pip install --editable
müssten Sie --pre
explizit übergeben, wenn Sie diese Vorabversionen möchten.
(Sehen Sie sich das CI-Protokoll mit versehentlich verwendeten Vorabversionen an und vergleichen Sie es hier mit einem festen Build .)