Проблемы с импортом модуля Python в командной строке - PullRequest
1 голос
/ 30 ноября 2011

Я установил несколько пакетов Python, к которым я могу получить доступ, используя IDLE, а не через окно командной оболочки.

Вот вывод из IDLE:

Python 2.7.2+ (default, Oct  4 2011, 20:03:08) 
[GCC 4.6.1] on linux2
Type "copyright", "credits" or "license()" for more information.
==== No Subprocess ====
>>> import whoosh

Вот вывод из моего терминала:

pradeep@ubuntu:~$ python
Python 2.7.2 (default, Nov 28 2011, 23:56:33) 
[GCC 4.6.1] on linux3
Type "help", "copyright", "credits" or "license" for more information.
>>> import whoosh
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named whoosh

Как я могу указать терминальный питон на пакеты IDLE? Почему терминал показывает 'linux3', а IDLE показывает 'linux2'? Пожалуйста, помогите мне с этой проблемой пути. спасибо.

Update1:

Спасибо всем. Как и многие из вас догадывались, у меня установлены две разные версии.

Показывает мой путь простоя

['/home/pradeep', '/usr/bin', '/usr/local/lib/python2.7/dist-packages/Whoosh-2.3.0-py2.7.egg', '/usr/lib/python2.7', '/usr/lib/python2.7/plat-linux2', '/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/PIL', '/usr/lib/python2.7/dist-packages/gst-0.10', '/usr/lib/python2.7/dist-packages/gtk-2.0', '/usr/lib/pymodules/python2.7', '/usr/lib/python2.7/dist-packages/ubuntu-sso-client', '/usr/lib/python2.7/dist-packages/ubuntuone-client', '/usr/lib/python2.7/dist-packages/ubuntuone-control-panel', '/usr/lib/python2.7/dist-packages/ubuntuone-couch', '/usr/lib/python2.7/dist-packages/ubuntuone-installer', '/usr/lib/python2.7/dist-packages/ubuntuone-storage-protocol']

Мой путь к терминалу показывает:

['', '/usr/local/lib/python27.zip', '/usr/local/lib/python2.7', '/usr/local/lib/python2.7/plat-linux3', '/usr/local/lib/python2.7/lib-tk', '/usr/local/lib/python2.7/lib-old', '/usr/local/lib/python2.7/lib-dynload', '/usr/local/lib/python2.7/site-packages']

Как удалить версию терминала и установить версию IDLE в терминал? Спасибо.

Ответы [ 4 ]

3 голосов
/ 30 ноября 2011

Пакеты ищутся во всех каталогах, определенных в пути Python.

Итак, если IDLE и terminal работают по-разному - это означает, что они имеют различия в путях Python.

Итак,

Попробуйте это: (И на IDLE, и на терминале)

import sys
print sys.path  # this prints the list of directories in the python path.

Сравните список, который вы получаете от обоих, и дополнительный каталог в IDLE будет иметь whoosh

Вы можете добавить каталоги в sys.path следующим образом:

import sys
sys.path.append('/home/user/packages')

Теперь все пакеты в /home/user/packages будут доступны для импорта.

3 голосов
/ 30 ноября 2011

Вы запускаете две разные установки Python, одну от 04.10.2011, а другую от 28.11.2011.Второй не имеет whoosh .

Ваши варианты:

  1. Найдите версию, которую использует IDLE, и запустите ее изкомандная строка.Чтобы найти его, включите IDLE и запустите import sys; print sys.executable.Это покажет вам местоположение версии с установленными пакетами.

  2. Или вы можете улучшить версию командной строки, установив те же пакеты в командной строке (т.е. запуститьpython setup.py install для различных пакетов, которые вы хотите загрузить.

1 голос
/ 30 ноября 2011

Вы должны убедиться, что PYTHONPATH установлен правильно в вашем ~/.profile или /usr/<user-name>/.profile.

Например (это для OS X, но просто найдите, где Python установлен на вашем компьютере):

export PYTHONPATH="/usr/local/lib/python2.7/site-package/:$PYTHONPATH"

Только для OS X требуется префикс экспорта, и вы можете проверить текущий путь, используя echo $PYTHONPATH в терминале.

После того, как вы изменили PYTHONPATH, чтобы указать на вашверсия папки пакета python, вам нужно заставить терминал обновить путь, используя это:

source ~/.profile

Затем попробуйте echo $PYTHONPATH еще раз и убедитесь, что он изменился.Тогда вы должны быть установлены до тех пор, пока вы указали на правильный каталог.

0 голосов
/ 27 января 2013

Это связано с проблемами пути. Я бы рекомендовал использовать виртуальные envs и pip в качестве стандарта при работе с внешними или импортированными пакетами.

Некоторые замечательные заметки здесь: https://python -guide.readthedocs.org / en / latest /

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...