Setuptools è sempre installato in Python per impostazione predefinita?

Nov 13 2020

Viene setuptoolssempre installato con Python?

Vorrei invocare setuptoolsin fase di esecuzione al di fuori di uno setup.pyscript.

In altre parole, dovrei includere setuptoolsall'interno del mio pacchetto di requirements.txte setup.py's install_requireslista?


sfondo

Ho notato durante la creazione di un nuovo ambiente virtuale (con Python 3.7.9) che entrambi pipe setuptoolssono installati di default:

python -m venv venv
source ./venv/bin/activate
pip list

Package    Version
---------- -------
pip        20.1.1
setuptools 47.1.0

Questo è documentato qui: Creazione di ambienti virtuali :

venv è disponibile per impostazione predefinita in Python 3.3 e versioni successive e installa pip e setuptools negli ambienti virtuali creati in Python 3.4 e versioni successive.

Anche in una versione vanilla di Python 3.7.6 (installato tramite pyenv), i pacchetti installati di default sono sia pipe setuptools.


Ricerca

I setuptools dovrebbero essere inclusi in setup_requires in Python?

Informa che setuptoolsnon dovrebbe essere incluso in setup_requires, ma non parla del fatto che sia incluso nei requisiti del pacchetto per l'uso in runtime.

Risposte

2 LiorCohen Nov 13 2020 at 05:59

TL; DR

Formalmente no. Di solito sì.

il setuptools non fa parte del codebase vanilla di Python, quindi non è un modulo vanilla .

Gli installatori di python.org o mac homebrew lo installeranno per te, ma se qualcuno compila il python da solo o lo installa su qualche distribuzione Linux potrebbe non ottenerlo e dovrà installarlo da solo .