Oleg1285
Дек. 17, 2013 10:19:39
Всем привет, ситуация следующая:
Есть структура каталогов следующего типа:
–run.py
—-folder1
—-script1.py
—-script2.py
…
В скрипте run.py я импортирую функцию automate() из модуля script1.py
В скрипте script1.py я импортирую модуль scripte2.py
Когда запуская run.py вижу, что питон не может импортировать scripte2.py.
Соответственно, если я запускаю scripte1.py из папки, модуль scripte2 нормально импортируется.
Как я понял питон пытается искать модуль script2.py в папке run.py и не находит, как решить проблему не экспортируя модули в libs?
Пробовал прописать в run.py
path = os.path.abspath('\folder1')
sys.path.append(path)
Не помогло…
Версия питона 3.4
Razor
Дек. 17, 2013 10:31:00
Спуститься на уровень ниже можно, прописывая перед файлом две точки и слэш ('../example.txt')
Oleg1285
Дек. 17, 2013 10:51:28
Я проверял переменную sys.path путь прописывается нормально.
с вариантом os.path.abspath('../folder1') эффект тот же самый - модуль script2.py не подгружается.
Master_Sergius
Дек. 17, 2013 11:01:50
Во-первых, в папке с модулями должен быть пустой файл __init__.py
Во-вторых, надо указывать импорт с учётом названия каталога
Oleg1285
Дек. 17, 2013 11:05:24
c __init__ файлом тоже пробовал.
Импорт прописываю как раз с указанием каталога from folder1.script1 import automate
Модуль то импортируется, проблема в том, что сам script1 перестает импортировать script2.
Oleg1285
Дек. 17, 2013 11:25:39
есть идеи?
bismigalis
Дек. 17, 2013 11:31:31
в третем питоне по умолчанию абсолютный импорт
из той же папки импортируй так
Oleg1285
Дек. 17, 2013 11:44:43
А Вы не путаете 2-й питон с 3-м? что-то я в 3-м такой записи не встречал, если сделать такую запиcь то получим SyntaxError
Я имею ввиду запись .script2 с точкой, у меня пропиcанно просто import script2
bismigalis
Дек. 17, 2013 12:25:41
да затупил, надо
from .module import staff
Oleg1285
Дек. 17, 2013 13:12:05
bismigalis
from .module import staff
спасибо, теперь все нормально импортируется.