Используют ли «python3» и «python» разные переменные пути?


9

Команда pythonоткрывает среду Python 2.7.6. Если я хочу интерпретировать скрипт Python 3, мне нужно переписать команду в python3.

Я только что установил пакет NumPy . Чтобы проверить успешную установку, я запускаю команду import numpy. Это хорошо работает при использовании pythonкоманды. Тем python3не менее, не находит пакет.

Как это возможно? Используют ли эти две команды разные переменные пути ? Как я могу изменить поведение?


может быть связано / полезно: stackoverflow.com/a/53767029/52074
Тревор Бойд Смит

Ответы:


9

Вы абсолютно правы, они используют разные PYTHONPATHс.

Вы можете думать о Python 2.x и Python 3.x как о совершенно разных средах программирования. И да, они хранят свои пакеты в разных местах.

Чтобы заставить работать numpy, вы можете набрать:

sudo apt-get install python3-numpy

Если вы хотите узнать, где именно находится пакет, вы можете посмотреть на __path__атрибуты объектов модуля :

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

Вы также можете установить, python3-pipа затем запустить, pip3 install whateverчтобы установить пакеты для Python 3 с Pip , для пакетов, которые недоступны в Ubuntu as python3-whatever.

Если вы не уверены в разнице между distutils, setuptools, easy_install, pip и остальными, используйте pip. Это круто. :)


2
Они не используют разные PYTHONPATH, а python2 использует только пакеты в $ PREFIX / lib / python2 * и python3 только те, что в $ PREFIX / lib / python3 *.
dalloliogm

4

Нет, они используют то же самое PATH. Тем не менее, эта проблема не с PATH.

Python 2 и Python 3 достаточно различны, поэтому пакеты должны быть написаны отдельно для них обоих. Вы не можете использовать пакет, написанный для одного с другим.

В Ubuntu эти модули хранятся в разных местах и ​​упакованы отдельно - python-numpyдля Python 2, python3-numpyдля Python 3. Если вы хотите использовать numpy с Python 3, установите 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

Действительно, оба импортируют модули из разных мест:

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

Чтобы иметь возможность импортировать numpyоба интерпретатора, обязательно установите их соответствующие пакеты:

  • python2.7: sudo apt-get install python-numpy
  • Python3.x: sudo apt-get install python3-numpy
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.