Добавление модулей python в pydev в eclipse приводит к ошибке импорта?

#python #eclipse #configuration #import #pydev

#python #eclipse #конфигурация #импорт #pydev

Вопрос:

У меня проблема с получением PyDev в eclipse для распознавания уже установленных модулей. Вот мой подробный подход. Это компьютер Mac (Snow Leopard).

В терминале команда

 python --version
  

показывает Python 2.6.6.

 import unidecode
  

и

 from unidecode import unidecode
  

оба работают нормально!

Я установил PyDev в Eclipse и перешел к настройке интерпретатора python (автоматическая настройка). Я выбрал все предложенные пакеты и нажал Применить и Ок.

Но eclipse продолжает жаловаться

 Traceback (most recent call last):
  File "/Users/me/Documents/workspace/myproject/python/pythontest.py", line 12, in <module>
    from unidecode import unidecode
ImportError: No module named unidecode
  

Файл python выглядит следующим образом

 #!/usr/bin/env python
# encoding: utf-8


import sys
import os
from unidecode import unidecode


def main():
    print unidecode(u"Ågot Aakra")

if __name__ == '__main__':
    main()
  

Когда я удаляю первую строку в скрипте

 #!/usr/bin/env python
  

это приводит к той же ошибке.

Кто-нибудь знает, в чем проблема?

Комментарии:

1. если у вас более одной версии python, убедитесь, что в pydev вы ссылаетесь на одну и ту же версию

2. @Abdul: В нижнем поле опции меню Интерпретаторы Python импортированные модули, похоже, тоже относятся к python 2.6. В пути к каждой строке указан python 2.6. Возможно, я должен упомянуть, что это Mac (Snow Leopard)

3. В какой папке хранится модуль unidecode? Отображается ли эта папка в системном окне PYTHONPATH в Eclipse?

4. @Stephen: Спасибо за вашу подсказку. Это помогло мне найти решение.

Ответ №1:

Это решение моей проблемы:

  1. Узнайте путь к папке ../site-packages/ вашей соответствующей версии python. (Для меня это было /opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/ для python 2.6 на моем Mac с Snoe Leopard.)
  2. Откройте настройки eclipse и перейдите в PyDev -> Интерпретатор — Python.
  3. В левой части нижнего окна нажмите на Новую папку.
  4. Добавьте navigate to ../site-packages/ вашей соответствующей версии python.
  5. Нажмите открыть.
  6. Нажмите Применить.
  7. Нажмите Ok.

И у вас все должно получиться. =)

Спасибо @all particionts, которые предоставили подсказки в правильном направлении в комментариях.

Комментарии:

1. Не забудьте проверить, что там что-то есть 🙂 Например. scipy не установлен с установкой python по умолчанию

2. Все еще работает. Но дополнительно мне потребовался перезапуск eclipse.

Ответ №2:

Я столкнулся с такой же проблемой только сегодня. Я использую pydev, и у меня был рабочий проект с несколькими подпакетами. Внезапно после создания нового модуля я не смог использовать этот модуль в другом пакете. Озадачивающей особенностью было то, что я мог использовать другой модуль в том же подпакете…

Наконец, после

  1. перезапуск eclipse
  2. удалите / добавьте интерпретатор python и все пакеты сайта
  3. раздраженное почесывание головы

Я удалил все скомпилированные классы с помощью следующего скрипта:

 import os

def clean_folder(folder):
  for file in os.listdir(folder):
    path = os.path.join(folder,file)
    if os.path.isdir(path):
        clean_folder(path)

    if '.pyc' == file[-4:]:
        print 'deleting: '   str(path)
        os.remove(path)

if __name__ == '__main__':
  folder = 'YOUR_PROJECT_SRC_PATH'
  clean_folder(folder)
  

и, наконец, я могу выполнять «реальную» работу 🙂
Надеюсь, это кому-нибудь поможет…

Ответ №3:

Вы можете просто добавить модуль в путь к pydev. Перейдите в свойства проекта (из контекстного меню) -> PyDev -> PYTHONPATH -> Внешние библиотеки. В зависимости от того, находится ли модуль в исходной папке или в файле zip / egg, выберите либо Добавить исходную папку, либо Добавить zip / jar / egg. Перейдите в каталог site-packages и укажите на соответствующий файл или папку (мой: /usr/local/lib/pythonx.x/site-packages)

Комментарии:

1. Спасибо! перепробовал так много решений, что это, наконец, сделало свое дело, после перезапуска eclipse (используя python3.5 на виртуальной машине Ubuntu)

Ответ №4:

Попробуйте настройки> pydev> интерпретатор — python и удалите и повторно добавьте интерпретатор python (убедитесь, что вы знаете путь к нему, прежде чем удалять его), при повторном добавлении отметьте все флажки.

Комментарии:

1. Я уже это сделал. Это не помогло. Я нашел решение самостоятельно, но спасибо за ваши усилия. =)

Ответ №5:

Когда Eclipse «теряется» в отношении того, какие пакеты существуют в вашей системе или в вашем проекте, в контекстном меню вашего проекта выберите пункт меню «Свойства», затем пункт «PyDev — PYTHONPATH» в treeview слева от диалогового окна, затем кнопку «Принудительно восстановить внутреннюю информацию». По-видимому, PyDev хранит вычисленный кэш информации, и когда по какой-либо причине кэш становится некогерентным, вы можете заставить PyDev пересчитать.

Ответ №6:

В моем случае я не получал эту ошибку перед компиляцией, но при компиляции я получил ошибку ImportError: нет модуля с именем myant.core. Я попытался добавить файлы из PyDev-PYTHONPATH, но снова получил ту же ошибку. Затем я понял, что на самом деле мне не нужно добавлять путь точно к папке, в которой находятся мои файлы .py. Фактически я должен добавить папку, в которой находится myant.core. После этого я сделал перезапуск, когда я снова перекомпилировал свой проект, проблема была исправлена. Я бы поделился тем, что у меня есть:

Python 2.7 Eclipse kepler 4.3, PyDev 3.9.2 и на моем ubuntu 14.04

расположение файлов.py: /${PROJECT_DIR_NAME}/src/myant/core , поэтому я добавил /${PROJECT_DIR_NAME}/src

Ответ №7:

@Aufwind ваш ответ выше помог, но не решил для меня.

  • Найдите путь к папке ../site-packages/ ….
  • Откройте настройки eclipse и перейдите в PyDev -> Интерпретатор — Python.
  • В левой части нижнего окна нажмите на Новую папку. —> здесь я отступил от ваших инструкций. Я добавил яйцо для модуля, который не был распознан. Добавление папки site-packages не исправило это.
  • Нажмите открыть.
  • Нажмите Применить.
  • Нажмите Ok.

И тогда я был готов к работе. =)

Ответ №8:

  1. Откройте окно eclipse -> настройки и перейдите в PyDev -> Интерпретатор.
  2. нажмите «Проверить, синхронизированы ли интерпретаторы со средой»

Это сделало это за меня. Перезапуск Eclipse не требовался.

Ответ №9:

Я исправил эту проблему, перейдя в свойства проекта -> PyDev Django и установив модуль настроек Django.введите описание изображения здесь

Ответ №10:

Для Oxygen 2 (я думаю, что это работало и в более ранних версиях)…

  1. Щелкните правой кнопкой мыши на папке проекта и выберите «Свойства»
  2. Выберите «PyDev — Интерпретатор / грамматика»
  3. Нажмите «Нажмите здесь, чтобы настроить интерпретатор, которого нет в списке»
  4. Выберите любой существующий интерпретатор из верхнего списка настроенных интерпретаторов
  5. Должно появиться диалоговое окно «Требуется выбор», в котором вы должны выбрать один или несколько интерпретаторов для восстановления. Проверьте все, что применимо
  6. Нажмите «ОК», и PyDev выполнит повторную проверку, и, я полагаю, перестроит некоторое внутреннее представление вашего сайта-пакеты
  7. Нажмите «Применить и закрыть», чтобы закрыть все диалоговые окна

Чтобы разметка ошибки импорта исчезла в моем редакторе кода, мне нужно ввести пробел после некорректного импорта, а затем сохранить изменение. Затем ошибка импорта исчезает, потому что PyDev теперь может найти модуль импорта-нарушителя.

Ответ №11:

Предположим, что ваш вечный модуль находится в / .

Запустите Eclipse и перейдите к опции project. Выберите «PyDev-PYTHONPATH», и справа вы увидите окно с вкладками. Выберите там внешние библиотеки. Нажмите «Добавить исходную папку» и выберите свою библиотеку по указанному выше пути.