Python 在Google App Engine中导入我自己的模块

Python 在Google App Engine中导入我自己的模块,python,google-app-engine,import,simpy,Python,Google App Engine,Import,Simpy,我是Google App Engine的新手,只是一直在玩弄它,但就我的一生而言,我不知道如何导入非标准模块,因此也不完全理解App.yaml文件的用途 基本上,我想从脚本文件中导入SimPy(约15个python文件的集合),但我所做的每一件事情的组合都会导致导入错误,即: from SimPy.Simulation import * ImportError: No module named SimPy.Simulation 目前它们都在同一个文件夹中,我的app.yaml文件如下: app

我是Google App Engine的新手,只是一直在玩弄它,但就我的一生而言,我不知道如何导入非标准模块,因此也不完全理解App.yaml文件的用途

基本上,我想从脚本文件中导入SimPy(约15个python文件的集合),但我所做的每一件事情的组合都会导致导入错误,即:

from SimPy.Simulation import *
ImportError: No module named SimPy.Simulation
目前它们都在同一个文件夹中,我的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文件中定义的文件夹的含义,记住它们没有物理结构,它们只是虚拟文件夹吗

干杯,如果你能帮忙,我肯定我被认为是个傻瓜:)

来自(跳过文件)文档:

应用程序目录中路径与静态\u dir路径或静态\u文件上载路径匹配的文件被视为静态文件应用程序目录中的所有其他文件都被视为应用程序和数据文件

skip_files元素指定应用程序目录中的哪些文件不上载到App Engine。该值可以是正则表达式,也可以是正则表达式列表。上载应用程序时,与任何正则表达式匹配的任何文件名都将从要上载的文件列表中忽略

(不要将
SimPy
放在跳过列表中)

无需在
app.yaml
中指定包含的程序文件。 确保应用程序目录包含名为
SimPy
使用
\uuuu init\uuuu.py
文件,当然还有(跳过文件)文档中的
Simulation.py

应用程序目录中路径与静态\u dir路径或静态\u文件上载路径匹配的文件被视为静态文件应用程序目录中的所有其他文件都被视为应用程序和数据文件

skip_files元素指定应用程序目录中的哪些文件不上载到App Engine。该值可以是正则表达式,也可以是正则表达式列表。上载应用程序时,与任何正则表达式匹配的任何文件名都将从要上载的文件列表中忽略

(不要将
SimPy
放在跳过列表中)

无需在
app.yaml
中指定包含的程序文件。 确保应用程序目录包含名为
SimPy

使用
\uuuu init\uuuu.py
文件,当然还有app.yaml文件的
Simulation.py
文档

处理程序部分主要通过将请求的url与依次指定的每个模式进行比较,并在发现第一个匹配时运行匹配的处理程序(或提供静态文件,如果指定了
static\u dir
static\u files
,而不是
script

在您显示的app.yaml中,与
/
完全匹配的url将导致调用处理程序
physicalsim.py
。所有其他处理程序将被忽略,因为它们来自同一url。如果这些是physicalsim.py的支持模块,则不需要在app.yaml中包含任何关于它们的内容

url不必与webapp内部的结构有任何关系。url路径和包含处理程序和模块的目录之间不需要有任何对应关系(尽管出于理智考虑,您可能希望至少保持一些相关性)

你看过文件了吗


app.yaml
所在的目录(即将上载的应用程序的根目录)将位于python路径上,您应该能够引用与之相关的所有模块(和/或在需要时在处理程序中添加其他模块)。

app.yaml文件的文档

处理程序部分主要通过将请求的url与依次指定的每个模式进行比较,并在发现第一个匹配时运行匹配的处理程序(或提供静态文件,如果指定了
static\u dir
static\u files
,而不是
script

在您显示的app.yaml中,与
/
完全匹配的url将导致调用处理程序
physicalsim.py
。所有其他处理程序将被忽略,因为它们来自同一url。如果这些是physicalsim.py的支持模块,则不需要在app.yaml中包含任何关于它们的内容

url不必与webapp内部的结构有任何关系。url路径和包含处理程序和模块的目录之间不需要有任何对应关系(尽管出于理智考虑,您可能希望至少保持一些相关性)

你看过文件了吗


app.yaml
所在的目录(即将上载的应用程序的根目录)将位于python路径上,您应该能够引用与之相关的所有模块(和/或在需要时在处理程序中添加其他模块).

将一个空的init.py添加到您希望从中导入模块的任何子文件夹中..我不知道这一点

我在这篇文章中找到了答案


将空的init.py添加到您希望从中导入模块的任何子文件夹中..我不知道这一点

我在这篇文章中找到了答案