Is there any significant difference between
pip install -e /path/to/mypackage
and the setuptools variant?
python /path/to/mypackage/setup.py develop
Is there any significant difference between
pip install -e /path/to/mypackage
and the setuptools variant?
python /path/to/mypackage/setup.py develop
Try to avoid calling setup.py
directly, it will not properly tell pip that you've installed your package.
With pip install -e
:
For local projects, the “SomeProject.egg-info” directory is created relative to the project path. This is one advantage over just using
setup.py develop
, which creates the “egg-info” directly relative the current working directory.
More: docs
Also read the setuptools' docs.
One more difference: pip install -e
uses wheel while
python setup.py develop
doesn't use it.
With install
, you could achieve the same behavior by using
pip install -e /path/to/package --no-use-wheel
More info on wheels : python wheels
--no-use-wheel
DEPRECATED in favour of --no-binary :all:
–
Castanon Another difference that may favor pip install -e
is that if your project has dependencies in install_requires
in setup.py
, then pip install -e .
installs dependencies with pip, while python setup.py develop
can install with easy_install
, and may cause problems re: 'egg-info' as mentioned above. When install-requires
uses dependency_links
with custom git URLs, with attached egg identifiers, this can be especially annoying.
pip install -e .
, it essentially makes a symlink in the relevant Python site-packages directory to point to your working copy. As code changes are made to that working copy, it is instantly reflected in the "installed" version, so you do not need to re-run installation commands as you go. This is primarily useful for developing in a repository that represents an installable package, but can also be handy for e.g. writing some collection of modules with only absolute imports, etc. –
Dnieper Yet another difference: when you run python setup.py develop
for a version that is considered a pre-release (perhaps because you're running it from a git clone when not having checked out a release), then you will enable installation of pre-releases of your dependencies. On the other hand, with pip install --editable
you would have to pass --pre
explicitly if you want these pre-releases.
(See the CI log with pre-releases accidentally used and compare that to a fixed build here.)
© 2022 - 2024 — McMap. All rights reserved.