Czy „python3” i „python” używają różnych zmiennych ścieżki?


9

Polecenie pythonotwiera środowisko Python 2.7.6. Jeśli chcę zinterpretować skrypt w języku Python 3, muszę przepisać polecenie na python3.

Właśnie zainstalowałem pakiet numpy . Aby przetestować pomyślną instalację, uruchamiam polecenie import numpy. Działa dobrze, gdy używasz pythonpolecenia. Jednak python3nie znajduje pakietu.

Jak to jest możliwe? Czy te dwa polecenia używają różnych zmiennych ścieżki ? Jak mogę zmienić zachowanie?


może być powiązany / przydatny: stackoverflow.com/a/53767029/52074
Trevor Boyd Smith

Odpowiedzi:


9

Masz absolutną rację, używają różnych PYTHONPATHs.

Python 2.x i Python 3.x można traktować jako zupełnie inne środowiska programistyczne. I tak, przechowują swoje paczki w różnych lokalizacjach.

Aby uruchomić Numpy, możesz wpisać:

sudo apt-get install python3-numpy

Jeśli chcesz dowiedzieć się, gdzie dokładnie jest przechowywany pakiet, możesz spojrzeć na __path__atrybut obiektów modułu :

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

Możesz także zainstalować, python3-pipa następnie uruchomić, pip3 install whateveraby zainstalować pakiety dla Python 3 z Pip , dla pakietów, które nie są dostępne w Ubuntu as python3-whatever.

Jeśli masz wątpliwości co do różnicy między distutils, setuptools, easy_install, pip i resztą, użyj pip. To jest fajne. :)


2
Nie używają różnych PYTHONPATH, ale raczej python2 używa tylko pakietów w $ PREFIX / lib / python2 *, a python3 tylko te w $ PREFIX / lib / python3 *.
dalloliogm,

4

Nie, używają tego samego PATH. Jednak ten problem nie dotyczy PATH.

Python 2 i Python 3 różnią się na tyle, że pakiety muszą być pisane osobno dla obu z nich. Nie możesz używać pakietu napisanego dla jednego z drugim.

W Ubuntu moduły te są przechowywane w różnych lokalizacjach i są pakowane osobno - python-numpydla Python 2, python3-numpydla Python 3. Jeśli chcesz numpy z Python 3, zainstaluj 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

Rzeczywiście, oba importują moduły z różnych lokalizacji:

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

Aby móc importować numpyz oboma tłumaczami, zainstaluj odpowiednie pakiety:

  • Python2.7: sudo apt-get install python-numpy
  • Python3.x: sudo apt-get install python3-numpy
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.