Импорт моих собственных модулей в Google App Engine - PullRequest
0 голосов
/ 06 августа 2010

Я новичок в Google App Engine и только что поиграл с ним, но я не понимаю, как импортировать нестандартные модули, и поэтому не совсем понимаюЦели файла app.yaml.

По сути, я хочу импортировать SimPy (набор из ~ 15 файлов Python) из моего файла сценария, но каждая комбинация действий, которые я делаю, приводит к ImportError, т.е.1004 *

В настоящее время они все находятся в одной папке, и мой файл app.yaml гласит:

application: physicalsim
version: 1
runtime: python
api_version: 1

handlers:
- url: /
  script: physicalsim.py
- url: /
  script: Globals.py
- url: /
  script: Simulation.py
etc....

Теперь я совершенно уверен, что синтаксис файла yaml неверен, но я не могу найти какую-либо полезную документацию о том, как это сделать где-то (немного расстраивает), я не совсем понимаю значение папок, определенных в некоторых файлах app.yaml, которые я видел, имея ввидунет физической структуры, это просто виртуальные папки?

Приветствие, если вы можете помочь, и я уверен, что я натолкнулся на глупость:)

Ответы [ 3 ]

3 голосов
/ 06 августа 2010

Из appconfig (пропуск файлов) doc:

Файлы в каталоге вашего приложения, пути которых соответствуют пути static_dir или пути загрузки static_files, считаются статическими файлами. Все остальные файлы в каталоге приложения считаются прикладной программой и файлами данных .

Элемент skip_files указывает, какие файлы в каталоге приложения не следует загружать в App Engine. Значение является либо регулярным выражением, либо списком регулярных выражений. Любое имя файла, которое соответствует любому из регулярных выражений, пропускается из списка файлов для загрузки при загрузке приложения.

(Не помещайте SimPy в список пропуска).

Нет необходимости указывать включенные программные файлы в app.yaml. Убедитесь, что каталог вашего приложения содержит подкаталог с именем SimPy с файлом __init__.py и, конечно, Simulation.py.

1 голос
/ 26 июня 2018

Добавьте пустой init .py в любую подпапку, из которой вы хотите импортировать модули.

Я нашел ответ в этом посте.

Импорт модуля из подпапки

1 голос
/ 06 августа 2010

Документация для файла app.yaml находится здесь на странице конфигурации приложения .

Секция обработчиков, по сути, работает путем сравнения URL-адреса запроса с каждым из шаблонов, указанных по очереди, и когда первое совпадение найдено при запуске соответствующего обработчика (или при обслуживании статических файлов, если вместо static_dir или static_files указано вместо script.

В указанном вами app.yaml URL, точно совпадающий с /, вызовет обработчик physicalsim.py. Все остальные обработчики будут игнорироваться, поскольку они обслуживаются с одного и того же URL. Если это вспомогательные модули для Physicalsim.py, вам не нужно ничего о них включать в app.yaml.

URL-адреса не должны иметь никакого отношения к тому, как внутренне выглядит структура вашего веб-приложения. Не должно быть никакого соответствия между путями URL и каталогами, содержащими ваши обработчики и модули (хотя для здравомыслия вы можете захотеть сохранить хотя бы некоторую корреляцию).

Проходили ли вы через начало работы документы?

Каталог, в котором находится app.yaml (т. Е. Корень вашего Приложения в том виде, в котором он будет загружен) будет находиться на пути к Python, вы должны иметь возможность ссылаться на все ваши модули относительно него (и / или добавлять другие в вашем обработчике, если необходимо).

...