2011-01-07 2 views
94

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

Я хочу, чтобы иметь возможность использовать файл 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 - трюк, чтобы подавить сообщение об ошибке, но программа все еще не функционирует правильно. Я получаю сообщение об ошибке, ImportError: No module named odbchelper. Таким образом, явно не получается добавить путь, или есть какая-то проблема, что многие мои перестановки с добавлением __init__.py файлов пропустили.

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

+0

Убедитесь, что случай (капитализация) верна для всех необходимых каталогов в вашем PYTHONPATH. –

+0

Я знаю, что на это уже был дан ответ, но я получил неразрешенный импорт для модуля 'grp'. Я просто добавил его в список 'builtins' в Preferences> PyDev> Interpreters> Python> Forced Builtins и все еще получаю автозаполнение для этого модуля – user1040495

ответ

123

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

+4

Если вы правильно установили свойства pydev, вам не нужно связываться с' sys.path' – Velociraptors

+6

Для других пользователей я хотел добавить свой опыт - Windows 7, Python 2.7.1, Eclipse 3.6.2, PyDev, Pyschopg (для Python 2.7 amd64). Установка Psychopg перешла на C: \ Python27 \ Lib \ site-packages \ psycopg2 (в рамках установки Python 2.7). Я сначала ссылался на эту папку и все дочерние папки с __init__.py, но обнаружил, что мне нужно также ссылаться на папку site_packages. (http://stackoverflow.com/questions/2983088/unresolved-import-models) (http://stackoverflow.com/questions/4631377/unresolved-import-issues-with-pydev-and-eclipse) – MaasSql

+80

Еще один момент отметить - для этого нужно перезапустить Eclipse. Кажется, что это работает только через «Файл -> Перезагрузка», а не закрытием и повторным открытием вручную. – soulBit

40

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

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

+0

Это отлично сработало для меня. –

+1

не работал для меня – Lars

+0

Это сработало! Просто добавлен File-> Restart: D –

14

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

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

1

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

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

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

1

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

Pydev and *.pyc Files

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

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

  1. Установка uncompyle2 из https://github.com/Mysterie/uncompyle2
  2. Run uncompyle2 против * .pyc файлов в сайт-пакеты Lib. Пример:

    uncompyle2 -r -o/TMP/путь/к/сайт-пакеты/Библиотека

  3. Переименуйте полученный * .pyc_dis файлы, полученные из uncompyle2 до * .py
  4. Переместить/скопировать эти *. ру файлы на пути пакетов участка
  5. в Eclipse, выберите File> Restart

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

7

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

+1

Ну, это тот, который исправил мою проблему. –

+0

Не нужно перезапускать только близко и снова открывать файл. Исправлено это для меня! – Jerther

4

Вот что работало для меня (мотивационного по soulBit):

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

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

0

После, на мой взгляд, позволит решить проблему

  1. Добавление инициализации.py в папку «~/Desktop/Python_Tutorials/diveintopython/py»
  2. Перейти к окну -> Настройки -> PyDev -> Интерпретаторы -> Python Interpreter для удаления настройки интерпретатора Python (причина в том, что PyDev не может автоматически обновлять любые изменения, сделанные в любой системе PYTHONPATH)
  3. Добавить в интерпретатором с теми же реквизитами, как и раньше (это освежит ваш Python интерпретатора установки с обновлениями, сделанных на PYTHONPATH)
  4. Наконец, так как ваш «~/Desktop/Python_Tutorials/diveintopython/py "не является стандартным PythonPath, вам нужно будет добавить его. Есть два способа сделать это.

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

Надежда помогает.

31

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

  • Выберите Проект -> RightClick->PyDev ->Удалить PyDev Project Config
  • файл->рестарт

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

+3

Не нужно перезапускать Eclipse, просто закрыть и снова открыть файл. Он также работал на Windows с Eclipse Luna, спасибо! –

+0

Это сработало и для меня. Благодаря! –

+0

Мне пришлось перезапустить Eclipse два раза, чтобы предупреждения исчезли. Спасибо –

-1
KD.py 

class A: 
a=10; 

KD2.py 
from com.jbk.KD import A; 
class B: 
    b=120; 

aa=A(); 
print(aa.a) 

Это отлично работает файл для меня

Другим примером является

main.py 
======= 
from com.jbk.scenarios.objectcreation.settings import _init 
from com.jbk.scenarios.objectcreation.subfile import stuff 

_init(); 
stuff(); 

settings.py 
========== 
def _init(): 
print("kiran") 


subfile.py 
========== 
def stuff(): 
print("asasas")  
+0

Пожалуйста, обратите внимание на отдельные имена файлов и коды. И вам также нужно исправить некоторые отступы. – dkato

Смежные вопросы