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


108

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

Дуже шкода, що щось таке просте ... виклик речей з якогось файлу, який існує десь на моїй машині ..., вимагає таких великих зусиль.


Переконайтеся, що випадок (з великої літери) правильний для всіх необхідних каталогів у вашому PYTHONPATH.
Cam Jackson

Я знаю, що на це вже відповіли, але я отримував невирішений імпорт для grpмодуля. Я щойно додав його до builtinsсписку в налаштуваннях> Налаштування> PyDev> Інтерпретатори> Python> Примусові вбудовані і все ще отримую автодоповнення для цього модуля
user1040495

Відповіді:


132

У властивостях вашого проекту 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-пакети \ psycopg2 (під встановленням Python 2.7). Спочатку я посилався на цю папку та всі дочірні папки з init .py, але виявив, що мені також довелося посилатися на папку site_packages. ( stackoverflow.com/questions/2983088/unolu-import-models ) ( stackoverflow.com/questions/4631377/… )
Джефф Маас

86
Ще один момент, який слід зазначити - Eclipse може знадобитися перезапустити, щоб це працювало. Це, здається, працює лише через "Файл -> Перезапустити", а не шляхом закриття та повторного відкриття вручну.
soulBit

18
Важливе зауваження: Я виявив , що інтерпретатор Auto Config додає C:\Python27\lib\site-packages, але на моєму комп'ютері, папка Lib капіталізуються: C:\Python27\Lib\site-packages. Замінивши нижній регістр на верхній регістр, а потім Файл-> Перезапустити, виправили проблему. Сподіваюсь, що це допоможе комусь іншому :)
Кем Джексон

10
@soulBit Я хотів би, щоб я міг простувати, що коментує 20 разів, я витратив добру годину, намагаючись з'ясувати, чому мій імпорт досі не вирішений. Дякую
Метт Додж

51

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

  • Виберіть Project -> RightClick-> PyDev -> Remove Remove PyDev Config Project
  • file-> перезапустити

І я використовував Python 2.7 в якості інтерпретатора, хоча це не дає ефекту, я думаю.


5
Не потрібно перезапускати Eclipse, достатньо закрити і знову відкрити файл. Він також працював у Windows з Eclipse Luna, Дякую!
Ноам Манос

Мені довелося перезапустити Eclipse два рази, щоб попередження зникли. Дякую
Володимир С.

Працює і з Python 3.7. Це має бути вирішенням цього питання.
SPRBRN

Я спробував це, і тепер не можу запустити свій сервер DEV. Як замінити файл?
Лі Лофтіс

@ BitByty-Bake що є першопричиною?
ankostis

42

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

НАЗВИТАНО помітив, що ви можете "видалити конфігурацію проекту PyDev", клацнувши правою кнопкою миші на проекті. Тоді це знову можна перетворити на проект PyDev, тепер це добре як золото!


Так, закрили та відновили проект, щоб позбутися від цих тривожних повідомлень ImportError
somnathchakrabarti

17

Я виправив pythonpath, і все було денді, коли я імпортував речі через консоль, але всі ці раніше невирішені імпорти все ще були позначені як помилки в моєму коді, незалежно від того, скільки разів я перезапускав затемнення або освіжав / очищав проект.

Я правою кнопкою миші натиснув на проект-> Pydev-> Видалити маркери помилок, і він позбувся цієї проблеми. Не хвилюйтесь, якщо ваш код містить фактичні помилки, вони будуть повторно позначені.


Це добре працює, використовуючи liclipse з odoo 10. Дякую!
Дід'єр

11

проект -> властивості -> pydev-pythonpath -> зовнішні бібліотеки -> додати вихідну папку, додати РОБОТУ папку проекту. Потім перезапустіть затемнення.


2
Ну, саме це вирішило мою проблему.
Саймон Хейвард

Не потрібно перезавантажувати, просто закрийте та знову відкрийте файл. Виправлено це для мене!
Джертер

4

Ось що для мене спрацювало (підкорило soulBit):

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

Це найпростіше рішення будь-коли, і воно повністю знімає дратівливу річ.


1

Існує два способи вирішення цього питання:

  • Видаліть інтерпретатор Python із "Перекладачів Python" та додайте його знову.
  • Або просто додайте папку з бібліотеками в інтерпретаторі, який ви використовуєте у своєму проекті, в моєму випадку я використовував "флакон", а додана мені папка "c: \ Python33 \ Lib \ site-пакети \ флаг-0,11.6 -py3.3.egg "

Тепер я більше не бачу помилки, і функція заповнення коду працює також з "пляшкою".


1

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

Файли Pydev та * .pyc

... виникла проблема з PyDev та файлами pyc. Що стосується конкретної lib, на яку я намагався посилатися, все, що постачається, - це файли pyc.

Ось що я зробив для вирішення цього питання:

  1. Встановіть unepyle2 з https://github.com/Mysterie/uncompyle2
  2. Запустіть unepyle2 проти файлів * .pyc у вікні пакетів сайтів. Приклад:

    unepyle2 -r -o / tmp / шлях / до / сайт-пакети / lib

  3. Перейменуйте отримані * .pyc_dis файли, створені від unspyle2, до * .py
  4. Перемістіть / скопіюйте ці * .py файли до шляху пакетів для сайтів
  5. У Eclipse виберіть Файл> Перезапустити

Невирішена помилка імпорту, що стосується файлів .pyc, тепер повинна зникнути.


0

Слідом, на мій погляд, вирішимо проблему

  1. Додавання init .py до папки "~ / Desktop / Python_Tutorials / diveintopython / py"
  2. Перейдіть у вікно -> Налаштування -> PyDev -> Інтерпретатори -> Інтерпретатор Python, щоб видалити налаштування інтерпретатора Python (причина в тому, що PyDev не може автоматично оновити будь-які оновлення, внесені до будь-якої системи PythonPath)
  3. Додайте до Інтерпретатора ті самі деталі, що і раніше (це оновить налаштування інтерпретатора Python оновленнями, внесеними до вашого PythonPath)
  4. Нарешті, оскільки папка "~ / Desktop / Python_Tutorials / diveintopython / py" не є стандартним PythonPath, вам потрібно буде додати її. Існує два способи зробити це

а. Відповідно до того, що запропонував Девід Герман. Однак це стосується лише конкретних проектів, у яких ви перебуваєте в b. Додайте "~ / Desktop / Python_Tutorials / diveintopython / py" в новий PythonPath під вікном -> Налаштування -> PyDev -> Інтерпретатори -> Інтерпретатор Python -> Підтатаб Бібліотеки -> NewFolder

Сподіваюся, це допомагає.


0

У мене виникли проблеми з імпортом додаткових бібліотек, після спроби вирішити проблему, розуміючи PYTHONPATH, Interpreter та Grammar, я виявив, що я все написав, але проблеми продовжуються. Після цього я просто додаю новий порожній рядок у файли, які мали помилки імпорту, і зберігав їх, і помилка була усунена .


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

Будь ласка, врахуйте, щоб розділити імена файлів та коди. А також потрібно зафіксувати деякі відступи.
дкато
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.