Verwenden "python3" und "python" unterschiedliche Pfadvariablen?

9

Der Befehl pythonöffnet eine Python 2.7.6-Umgebung. Wenn ich ein Python 3-Skript interpretieren möchte, muss ich den Befehl umschreiben python3.

Ich habe gerade das Numpy- Paket installiert . Um die erfolgreiche Installation zu testen, führe ich den Befehl aus import numpy. Es funktioniert gut, wenn Sie den pythonBefehl verwenden. Allerdings python3findet nicht das Paket.

Wie ist das möglich? Haben diese beiden Befehle verwenden unterschiedliche Pfadvariablen? Wie kann ich das Verhalten ändern?

Null
quelle
könnte verwandt / nützlich sein: stackoverflow.com/a/53767029/52074
Trevor Boyd Smith

Antworten:

9

Sie haben absolut Recht, sie verwenden verschiedene PYTHONPATHs.

Sie können sich Python 2.x und Python 3.x als völlig unterschiedliche Programmierumgebungen vorstellen. Und ja, sie lagern ihre Pakete an verschiedenen Orten.

Um numpy zum Laufen zu bringen, können Sie Folgendes eingeben:

sudo apt-get install python3-numpy

Wenn Sie herausfinden möchten, wo genau ein Paket aufbewahrt wird, können Sie sich das Modulobjektattribut ansehen __path__:

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

Sie können auch Pakete für Python 3 mit Pip installieren python3-pipund dann ausführen pip3 install whatever, um Pakete zu installieren , die in Ubuntu as nicht verfügbar sind .python3-whatever

Wenn Sie über den Unterschied zwischen distutils, setuptools, easy_install, pip und den anderen verwirrt sind, verwenden Sie pip. Das ist der coole. :) :)

Stefano Palazzo
quelle
2
Sie verwenden kein anderes PYTHONPATH, sondern python2 verwendet nur Pakete in $ PREFIX / lib / python2 * und python3 nur solche in $ PREFIX / lib / python3 *.
Dallasoli
4

Nein, sie benutzen das gleiche PATH. Doch dies ist nicht Problem mit dem PATH.

Python 2 und Python 3 unterscheiden sich so stark, dass Pakete für beide separat geschrieben werden müssen. Sie können ein Paket, das für eines geschrieben wurde, nicht miteinander verwenden.

In Ubuntu werden diese Module an verschiedenen Orten gespeichert und separat verpackt - python-numpyfür Python 2, python3-numpyfür Python 3. Wenn Sie mit Python 3 numpy möchten, installieren Sie 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']
muru
quelle
3

In der Tat importieren beide Module von verschiedenen Standorten:

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

Um numpymit beiden Interpreten importieren zu können , müssen Sie die entsprechenden Pakete installieren:

  • Python2.7: sudo apt-get install python-numpy
  • Python3.x: sudo apt-get install python3-numpy
Sylvain Pineau
quelle