Неразрешенные проблемы импорта с 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.
Вот что я сделал, чтобы решить эту проблему:
Неразрешенная ошибка импорта, относящаяся к файлам .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
Надеюсь, что это поможет.