“Python3” e “python” usano variabili di percorso diverse?


9

Il comando pythonapre un ambiente Python 2.7.6. Se voglio interpretare uno script Python 3, devo riscrivere il comando in python3.

Ho appena installato il pacchetto numpy . Per testare l'installazione corretta, eseguo il comando import numpy. Funziona bene quando si utilizza il pythoncomando. Tuttavia, python3non trova il pacchetto.

Com'è possibile? Questi due comandi utilizzano variabili di percorso diverse ? Come posso cambiare il comportamento?


potrebbe essere correlato / utile: stackoverflow.com/a/53767029/52074
Trevor Boyd Smith

Risposte:


9

Hai assolutamente ragione, usano diversi PYTHONPATHs.

Puoi pensare a Python 2.xe Python 3.x come ambienti di programmazione completamente diversi. E sì, conservano i loro pacchi in luoghi diversi.

Per far funzionare numpy, puoi digitare:

sudo apt-get install python3-numpy

Se vuoi scoprire dove si trova esattamente un pacchetto, puoi guardare l' __path__attributo degli oggetti del modulo :

>>> import numpy
>>> numpy.__path__
['/usr/local/lib/python3.5/site-packages/numpy']

Puoi anche installare python3-piped eseguire pip3 install whateverper installare i pacchetti per Python 3 con Pip , per i pacchetti che non sono disponibili in Ubuntu come python3-whatever.

Nel caso in cui tu sia confuso sulla differenza tra distutils, setuptools, easy_install, pip e il resto, usa pip. Questo è fantastico. :)


2
Non usano PYTHONPATH diverso, ma piuttosto python2 usa solo pacchetti in $ PREFIX / lib / python2 * e python3 solo quelli in $ PREFIX / lib / python3 *.
dalloliogm,

4

No, usano lo stesso PATH. Tuttavia, questo problema non riguarda il PATH.

Python 2 e Python 3 sono sufficientemente diversi che i pacchetti devono essere scritti separatamente per entrambi. Non è possibile utilizzare un pacchetto scritto l'uno per l'altro.

In Ubuntu, questi moduli sono archiviati in posizioni diverse e sono impacchettati separatamente - python-numpyper Python 2, python3-numpyper Python 3. Se vuoi numpy con Python 3, installa python3-numpy.

$ python3 -c 'import sys; print (sys.path)'
['', '/usr/lib/python3.4', '/usr/lib/python3.4/plat-x86_64-linux-gnu', '/usr/lib/python3.4/lib-dynload', '/home/muru/.local/lib/python3.4/site-packages', '/usr/local/lib/python3.4/dist-packages', '/usr/lib/python3/dist-packages']
$ python2 -c 'import sys; print (sys.path)'
['', '/usr/lib/python2.7', '/usr/lib/python2.7/plat-x86_64-linux-gnu', '/usr/lib/python2.7/lib-tk', '/usr/lib/python2.7/lib-old', '/usr/lib/python2.7/lib-dynload', '/usr/local/lib/python2.7/dist-packages', '/usr/lib/python2.7/dist-packages', '/usr/lib/python2.7/dist-packages/PILcompat', '/usr/lib/python2.7/dist-packages/gtk-2.0', '/usr/lib/pymodules/python2.7', '/usr/lib/python2.7/dist-packages/ubuntu-sso-client']

3

In effetti, entrambi stanno importando moduli da posizioni diverse:

  • Python2.7: /usr/lib/python2.7/dist-packages/numpy/
  • Python3.x: /usr/lib/python3/dist-packages/numpy/

Per poter importare numpycon entrambi gli interpreti, assicurarsi di installare i pacchetti corrispondenti:

  • Python2.7: sudo apt-get install python-numpy
  • Python3.x: sudo apt-get install python3-numpy
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.