Неразрешенные проблемы импорта с PyDev и Eclipse

Я очень новичок в PyDev и Python, хотя я много использовал Eclipse для Java. Я пытаюсь работать с некоторыми примерами Dive Into Python, и это похоже на чрезвычайно тривиальную проблему, которая просто становится чрезвычайно раздражающей. Я использую Ubuntu Linux 10.04.

Я хочу иметь возможность использовать файл odbchelper.py, который находится в каталоге /Desktop/Python_Tutorials/diveintopython/py

Вот мой файл example.py, над которым я работаю в моем проекте PyDev/Eclipse:

import sys
sys.path.append("~/Desktop/Python_Tutorials/diveintopython/py")

Это отлично работает, но тогда я хочу, чтобы следующая строка моего кода была:

import odbchelper

и это вызывает неразрешенную ошибку импорта каждый раз. Я добавил файлы __init__.py практически в любую директорию, и это ничего не помогает. Я попытался добавить файлы __init__.py по одному на разные уровни каталогов между местоположением проекта и файлом odbchelper.py, а также попытался добавить файлы __init__.py во все каталоги между ними одновременно, Ничего не работает.

Все, что я хочу сделать, это иметь проект где-то в другом каталоге, скажем /Desktop/MyStuff/Project, в котором у меня есть example.py... и затем из example.py. Я хочу импортировать odbchelper.py из /Desktop/Python_Tutorials/diveintopython/py/

Каждый ответ на доске объявлений, который я могу найти, просто говорит, чтобы использовать функцию sys.path.append(), чтобы добавить этот каталог к ​​моему пути, а затем импортировать его... но это именно то, что я делаю в своем коде, и он не работает.

Я также попробовал трюк Ctrl - 1 для подавления сообщения об ошибке, но программа по-прежнему не работает правильно. Я получаю сообщение об ошибке, ImportError: No module named odbchelper. Таким образом, это явно не добавляет путь, или есть какая-то проблема, что многие мои перестановки добавления файлов __init__.py пропустили.

Это очень расстраивает то, что что-то такое простое... вызов вещей из какого-то файла, который существует где-то еще на моей машине... требует больших усилий.

Ответ 1

В свойствах вашего проекта pydev есть панель под названием "PyDev - PYTHONPATH" с подпанелей под названием "Внешние библиотеки". Вы можете добавить исходные папки (любую папку с __init__.py) в путь, используя эту панель. После этого код проекта сможет импортировать модули из этих исходных папок.

Ответ 2

Я только что обновил проект WXWindows до Python 2.7 и не имел никаких проблем с получением Pydev для распознавания нового интерпретатора. Сделал то же самое, что и выше, настроив интерпретатор, сделал новую установку Eclipse и Pydev. Подумал, что часть python, должно быть, была повреждена, поэтому я снова установил все. Arghh! Закрыл и снова открыл проект и перезапустил Eclipse между всеми этими изменениями.

FINALLY заметил, что вы можете "удалить конфигурацию проекта PyDev", щелкнув правой кнопкой мыши по проекту. Затем он снова может быть превращен в проект PyDev, теперь он хорош как золото!

Ответ 3

Я использую eclipse kepler 4.3, PyDev 3.9.2, и на моем ubuntu 14.04 я столкнулся с той же проблемой. Я пробовал и проводил часы, со всеми вышеперечисленными вариантами, но напрасно. Затем я попробовал следующее, что было замечательно:

  • Выберите Проект → RightClick- > PyDev Удалить конфигурацию проекта PyDev
  • file- > перезагрузка

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

Ответ 4

Я установил свой pythonpath, и все было денди, когда я импортировал материал через консоль, но все эти ранее неразрешенные импортные данные по-прежнему были отмечены как ошибки в моем коде, независимо от того, сколько раз я перезапускал eclipse или обновлял/очищал проект.

Я щелкнул правой кнопкой мыши проект- > Pydev- > Удалить маркеры ошибок и избавился от этой проблемы. Не беспокойтесь, если ваш код содержит фактические ошибки, они будут повторно отмечены.

Ответ 5

project → properties → pydev-pythonpath → внешние библиотеки → добавить исходную папку, добавьте PARENT FOLDER проекта. Затем перезапустите eclipse.

Ответ 6

Вот что сработало для меня (sugested от soulBit):

1) Restart using restart from the file menu
2) Once it started again, manually close and open it.

Это самое простое решение когда-либо, и оно полностью устраняет раздражающую вещь.

Ответ 7

Существует два способа решения этой проблемы:

  • Удалите интерпретатор Python из "интерпретаторов Python" и добавьте его снова.
  • Или просто добавьте папку с библиотеками в интерпретаторе, который вы используете в своем проекте, в моем случае я использовал "бутылку", а папка, которую я добавил, была "c:\Python33\Lib\site-packages\bottle- 0.11.6-py3.3.egg"

Теперь я больше не вижу ошибки, а функция завершения кода работает также с "бутылкой".

Ответ 8

Я запускаю Eclipse 4.2.0 (Juno) и PyDev 2.8.1, и столкнулся с этой проблемой, когда lib установлен на мой путь к пакетам сайтов. В соответствии с этим вопросом SO:

Файлы Pydev и *.pyc

... есть проблема с файлами PyDev и pyc. В случае конкретной библиотеки, с которой я пытался ссылаться, все, что доставлено, - это файлы pyc.

Вот что я сделал, чтобы решить эту проблему:

  • Установить uncompyle2 из https://github.com/Mysterie/uncompyle2
  • Запустите uncompyle2 в файлах *.pyc в папке lib сайтов. Пример:

    uncompyle2 -r -o/tmp/path/to/site-packages/lib

  • Переименуйте полученные файлы *.pyc_dis, созданные из uncompyle2, на *.py
  • Переместить/скопировать эти *.py файлы на путь пакетов сайтов.
  • В Eclipse выберите "Файл" > "Перезагрузка"

Неразрешенная ошибка импорта, относящаяся к файлам .pyc, теперь должна исчезнуть.

Ответ 9

Следующее, на мой взгляд, решит проблему

  • Добавление init.py в папку "~/Desktop/Python_Tutorials/diveintopython/py"
  • Перейдите в Window → Preferences → PyDev → Interpreters → Python Interpreter, чтобы удалить настройку Python Interpreter (причина заключается в том, что PyDev не может автоматически обновлять любые обновления, сделанные для любой System PythonPath)
  • Добавьте в интерпретаторе те же данные, что и раньше (это обновит настройку Python Interpreter обновлениями, сделанными на вашем PythonPath).
  • Наконец, поскольку ваша папка "~/Desktop/Python_Tutorials/diveintopython/py" не является стандартным PythonPath, вам нужно будет добавить ее. Есть два способа сделать это.

а. В соответствии с предложением Дэвида Германа. Однако это применимо только для конкретных проектов, в которых вы находитесь б. Добавить в "~/Desktop/Python_Tutorials/diveintopython/py" в новый PythonPath под окном → Настройки → PyDev → Интерпретаторы → Python Interpreter → Библиотеки subtab → NewFolder

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