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


Я очень новичок в PyDev и Python, хотя я использовал Eclipse для Java много. Я пытаюсь работать с некоторыми примерами погружения в 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 файлы пропустил.

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

10 96

10 ответов:

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

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

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

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

  • выберите проект - > щелкните правой кнопкой мыши ->пункт PyDev -> Удалить PyDev Project Config
  • file ->перезагрузка

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

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

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

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

вот то, что работал для меня (мотивационные по соулбит):

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

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

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

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

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

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

пункт PyDev и *.файлы pyc

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

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

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

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

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

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

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

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

a. согласно тому, что предложил Дэвид Герман. Однако это применимо только для конкретных проектов, в которых вы находитесь b. добавьте в "~ / Desktop / Python_Tutorials/diveintopython/py" в новый PythonPath под окном -- > настройки --> Пункт PyDev --> переводчики --> интерпретатор Python --> библиотеки вкладке -- > "Создать папку"

надеюсь, что это помогает.

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")