question-mark
Stuck on an issue?

Lightrun Answers was designed to reduce the constant googling that comes with debugging 3rd party libraries. It collects links to all the places you might be looking at while hunting down a tough bug.

And, if you’re still stuck at the end, we’re happy to hop on a call to see how we can help out.

Please do not remove `setup.py install` as it is needed for distribution packagers

See original GitHub issue

As requested in https://github.com/pypa/setuptools/issues/510#issuecomment-623153201 I’m opening a new issue. What I’d like for is that setup.py install --root=... (or a minimal equivalent) remains working as a ‘low-level’ install command for distribution packagers.

Installing packages straight from setuptools (much like distutils) has important advantages for us:

  1. The --root= install mode fits just fine the packaging logic we have. We need a command that puts files in a directory we can use. We build distribution packages, and would really like to avoid building a wheel just to have to repack it into plain package.
  2. We need minimal dependencies, and certainly have to avoid circular dependencies. While for tools like pip it might be acceptable to employ dirty bootstrap hacks, we really prefer not to have to rely on that to get the initial install working.
  3. There are literally thousands of packages calling setup.py install one way or another. At least in Gentoo the majority of them is covered by our Python framework and could be easily swapped to use another install method but I can imagine others are not so lucky. It’s not fair to ask people to change all that.
  4. There are many packages that customize the install command, including some high profile ones. If the command is removed, they would all become broken, wouldn’t they?

All that considered, please keep setup.py build and setup.py install commands for us. I don’t care if they output huge warnings, require magical environment variables to be run but they need to stay as backend commands.

Issue Analytics

  • State:closed
  • Created 3 years ago
  • Reactions:12
  • Comments:38 (33 by maintainers)

github_iconTop GitHub Comments

6reactions
eli-schwartzcommented, May 10, 2020

Well, it looks like we could, we would just need to create a second python package just to reimplement main() around Pep517HookCaller without calling pip first.

This is quite awkward, not least because it’s an explosion of tools and Arch Linux dislikes an explosion of custom distro tools (we devoutly avoid build recipe macros, templates, and inferred hooks with the rationale that they’re unreadable and turn the act of packaging into some secret invite-only club of people who actually understand the endless layers). It would be best if pep517 could just… not call pip when it knows all the Distributions are there. The point of this reinvention of the python packaging landscape was to make things less coupled together, right? So it seems silly to couple pep517 to pip for any reason.

4reactions
mgornycommented, Nov 10, 2021

Eh, things are getting even better. I’ve spent significant time trying to figure out how data_files work with wheels. Unless I’m mistaken, this is done completely outside wheel spec, and it was deprecated anyway. So if I write a useful user-facing Python program, I’m not supposed to install .desktop files for it, or a working manpage, right?

Read more comments on GitHub >

github_iconTop Results From Across the Web

python setup.py uninstall - Stack Overflow
So I don't see the reason why they use setup.py instead of writing requirements.txt file. The requirement file can be used to install...
Read more >
Why you shouldn't invoke setup.py directly - Paul Ganssle
This does not mean that setuptools itself is deprecated, or that using setup.py to configure your package builds is going to be removed....
Read more >
Packaging and distributing projects
First, make sure you have already fulfilled the requirements for installing packages. Install “twine” 1: Unix/macOS. python3 -m pip install twine.
Read more >
setuptools 3.0.2 - PyPI
Easily download, build, install, upgrade, and uninstall Python packages.
Read more >
Python: Creating a pip installable package
pip is a package management system, specifically designed for installing Python ... This is essentially trying to install a version that does not...
Read more >

github_iconTop Related Medium Post

No results found

github_iconTop Related StackOverflow Question

No results found

github_iconTroubleshoot Live Code

Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start Free

github_iconTop Related Reddit Thread

No results found

github_iconTop Related Hackernoon Post

No results found

github_iconTop Related Tweet

No results found

github_iconTop Related Dev.to Post

No results found

github_iconTop Related Hashnode Post

No results found