Я попытался добавить следующую строку к своему сценарию обработчика (main.py), но это, кажется, не работает:
sys.path.append ('subdir')
subdir
жизни в моем корневом каталоге (т.е. тот, содержащий app.yaml
).
Это, кажется, не работает, потому что, когда я пытаюсь импортировать модули, это живет в subdir
, мое приложение взрывается.
1) Убедитесь, что у вас есть пустой файл __ init __. Py
в подкаталоге
.
2) Используйте полный путь; что-то вроде этого:
import os
import sys
sys.path.append(os.path.join(os.path.dirname(__file__), 'subdir'))
Изменить: предоставление дополнительной информации для ответов на вопросы, заданные в комментарии.
Как показывает Ник Джонсон , вы можете поместить эти три строки кода в файл с именем fix_path.py
. Затем в файле main.py
сделайте этот import fix_path
перед всеми остальными операциями импорта. Ссылка на протестированное приложение, использующее этот метод .
И да, требуется файл __ init __. Py
; согласно документации :
При импорте пакета Python просматривает каталоги на sys.path в поисках подкаталога пакета .
Файлы
__ init __. Py
необходимы, чтобы Python обрабатывал каталоги как , содержащие пакеты; это сделано для предотвращения того, чтобы каталоги с общим именем, например строкой, непреднамеренно скрывали допустимые модули , которые появляются позже при поиске модулей {{1 }} дорожка. В простейшем случае__ init __. Py
может быть просто пустым файлом, но он также может выполнять код инициализации для пакета или устанавливать__ all __
переменная, описанная ниже.