Pregunta

Soy nuevo a Google App Engine y simplemente he estado jugando un rato con él, pero para la vida de mí no entiendo cómo importar módulos no estándar, y para el caso que no entiendo plenamente la fines de archivo app.yaml.

En esencia quiero importar Simpy (una colección de ~ 15 archivos pitón) de mi archivo de script, pero todas las combinaciones de las cosas que hago como resultado un ImportError, es decir:

from SimPy.Simulation import *
ImportError: No module named SimPy.Simulation

En la actualidad todos están en la misma carpeta y el archivo de app.yaml dice lo siguiente:

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

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

Ahora estoy bastante seguro de que tengo la sintaxis del archivo de mal yaml, pero realmente no puedo encontrar ninguna documentación útil acerca de cómo hacerlo en cualquier lugar (poco frustrante), yo no entiendo muy bien el significado de las carpetas definidas en algunos de los archivos app.yaml que he visto, teniendo en cuenta que no hay estructura física, que son simplemente carpetas virtuales?

Saludos, si puede evitarlo y estoy seguro de que he encontrado como un burro:)

¿Fue útil?

Solución

Desde el appconfig (se pierden los archivos) doc:

  

Los archivos en el directorio de la aplicación cuyos caminos que coincida con un camino o una ruta de static_dir static_files carga se considera que son archivos estáticos. Todos los demás archivos en el directorio de la aplicación se consideran programas de aplicación y archivos de datos .

     

Las especifica skip_files elemento que los archivos en el directorio de la aplicación no se van a cargar en App Engine. El valor es una expresión regular, o una lista de expresiones regulares. Cualquier nombre de archivo que coincide con alguna de las expresiones regulares se omite de la lista de archivos a subir cuando se carga la aplicación.

(no poner SimPy en una lista de salto).

No hay necesidad de especificar los archivos de programa incluidas en app.yaml. Asegúrese de que su directorio de la aplicación incluye un SimPy sub-directorio llamado con un archivo __init__.py y, por supuesto, Simulation.py.

Otros consejos

La documentación para el archivo app.yaml es aquí en la Solicitud la página de configuración .

La sección gestores funciona esencialmente mediante la comparación url de una solicitud con cada uno de los patrones especificados, a su vez, y cuando el primer partido se encuentra ejecutando el controlador de juego (o sirviendo archivos estáticos si no se especifica static_dir o static_files en lugar de script.

En el app.yaml que has demostrado, la URL que coincida exactamente / hará que el physicalsim.py manejador a ser llamado. Todos los otros manipuladores serán ignorados ya que son servidos desde la misma URL. Si esos son los módulos de soporte para physicalsim.py usted no necesita incluir nada de ellos en app.yaml.

Las URL no tiene que tener ninguna relación con lo que la estructura de su apariencia webapp como internamente. No tiene por qué haber ninguna correspondencia entre las rutas de URL y los directorios que contienen los controladores y módulos (aunque por el bien de la cordura es posible que desee mantener al menos cierta correlación).

¿Ha sido a través de los empezar?

El directorio en el que reside el app.yaml (es decir, la raíz de su aplicación, ya que será subido) estará en el camino de pitón, usted debería ser capaz de hacer referencia a todos sus módulos con respecto a ella (y / o añadir otros en el controlador si es necesario).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top