Как Вы изменяете sys.path в Google App Engine (Python)?

Я попытался добавить следующую строку к своему сценарию обработчика (main.py), но это, кажется, не работает:

sys.path.append ('subdir')

subdir жизни в моем корневом каталоге (т.е. тот, содержащий app.yaml).

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

9
задан allyourcode 1 March 2010 в 06:11
поделиться

1 ответ

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 __ переменная, описанная ниже.

19
ответ дан 4 December 2019 в 10:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: