Ho una versione locale di Python 3.4.1 e posso eseguire python -m pip install
, ma non riesco a trovare il pip binario da eseguire pip install
. Qual è la differenza tra questi due?Qual è la differenza tra "pip install" e "python -m pip install"?
risposta
Fanno esattamente la stessa cosa. In effetti, i documenti per distribuire i moduli Python erano just updated per suggerire di utilizzare python -m pip
invece dell'eseguibile pip
, perché è più facile stabilire quale versione di python verrà utilizzata per eseguire effettivamente pip
in questo modo.
Edit:
Ecco qualche "prova" più concreto, al di là solo confidando la mia parola e la segnalazione di bug ho linkato :)
Se si dà un'occhiata allo script eseguibile pip
, è solo fare questo:
from pkg_resources import load_entry_point
<snip>
load_entry_point('pip==1.5.4', 'console_scripts', 'pip')()
Si chiama load_entry_point
, che restituisce una funzione, e quindi l'esecuzione di tale funzione. Il punto di ingresso che sta utilizzando si chiama 'console_scripts'
. Se si guarda il file entry_points.txt per pip
(/usr/lib/python2.7/dist-packages/pip-1.5.4.egg-info/entry_points.txt sulla mia macchina Ubuntu), vedrai questo:
[console_scripts]
pip = pip:main
pip2.7 = pip:main
pip2 = pip:main
Quindi il punto di ingresso restituita è la funzione main
nel modulo pip
.
Quando si esegue python -m pip
, si sta eseguendo lo script __main__.py
all'interno del pacchetto pip
. Che assomiglia a questo:
import sys
from .runner import run
if __name__ == '__main__':
exit = run()
if exit:
sys.exit(exit)
E la funzione runner.run
assomiglia a questo:
def run():
base = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
## FIXME: this is kind of crude; if we could create a fake pip
## module, then exec into it and update pip.__path__ properly, we
## wouldn't have to update sys.path:
sys.path.insert(0, base)
import pip
return pip.main()
Come si può vedere, è solo chiamando la funzione pip.main
, anche. Quindi entrambi i comandi finiscono per chiamare la stessa funzione main
in pip/__init__.py
.
- 1. python pip silent install
- 2. pip install - locale.Error: impostazione
- 3. pip install errore U PySide
- 4. Qual è la differenza tra installazione di pip e installazione di sudo pip?
- 5. Come posso far funzionare jenkins "pip install"?
- 6. SSLError utilizzando pip install (per installare tensorflow)
- 7. windows7 64bit python pip install error: Impossibile trovare vcvarsall.bat
- 8. Differenza tra comando "install" adb e comando "pm install"?
- 9. Python GDAL: pip installazione --no-install GDAL fallisce
- 10. Perché "pip install" in Python genera un SyntaxError?
- 11. Qual è la differenza tra apt-get virtualenv e pip virtualenv?
- 12. Quando sarebbe utile l'opzione -e, --editable con pip install?
- 13. Esegui attività personalizzata quando si chiama `pip install`
- 14. Impossibile installare pip install pyautogui, codice di errore 1
- 15. Installazione PIP e percorso Python
- 16. pip install: Come forzare una specifica versione del pacchetto
- 17. Qual è il flag -H per pip?
- 18. Python pip dice: pkg_resources.DistributionNotFound: pip == 1.4.1
- 19. Pip, ruota e console_scripts
- 20. "PIP installare --editable ./" vs "python setup.py sviluppare"
- 21. Differenza di dettagli tra "make install" e "rendere altinstall"
- 22. Installare pip per Python 3.5
- 23. python install lxml su mac os 10.10.1
- 24. Come installare i pacchetti Python dal file tar.gz senza usare pip install
- 25. Qual è la differenza tra l'installazione di un pacchetto usando pip vs. apt-get?
- 26. Flusso di lavoro con virtualenv e pip
- 27. pipe install numpy (python 2.7) fallisce con errorcode 1
- 28. Differenza tra rotaie 'bundle' e 'bundle install' 3?
- 29. Pip: ImportError: Punto di ingresso ('console_scripts', 'pip') non trovato
Grazie per la risposta, dove posso confermare tali informazioni? E dove sono installati i pacchetti usando il Python locale? – ilciavo
@ilciavo Vedi la mia modifica. – dano
E questo "concetto" non si applica solo a 'pip', ma anche altri" strumenti da riga di comando "di Python possono essere chiamati così. Ad esempio, 'python -m markdown'. Per citare il menu della guida di python '-m mod: esegui il modulo libreria come script' – Sebastian