Google app engine GCP:if uuu name uuuu=='__主&';不起作用

Google app engine GCP:if uuu name uuuu=='__主&';不起作用,google-app-engine,google-cloud-platform,google-cloud-functions,google-cloud-storage,google-cloud-run,Google App Engine,Google Cloud Platform,Google Cloud Functions,Google Cloud Storage,Google Cloud Run,我试图在谷歌云上运行一个Python应用程序,该应用程序在GCP上运行,代码包括 如果uuuu name_uuuu=='\uuuuuuu main\uuuuuu': 声明。由于某些原因,此语句后面的代码不会运行,并且 print(\uuuuuu name\uuuuuuu=='\uuuuuuuu main\uuuuuuu') 返回“False”而 print(\uuuuu name\uuuuuu) 返回'main' 当我在Jupyter笔记本上运行代码时 print(\uuuuuu name

我试图在谷歌云上运行一个Python应用程序,该应用程序在GCP上运行,代码包括

如果uuuu name_uuuu=='\uuuuuuu main\uuuuuu':
声明。由于某些原因,此语句后面的代码不会运行,并且

print(\uuuuuu name\uuuuuuu=='\uuuuuuuu main\uuuuuuu')
返回
“False”

print(\uuuuu name\uuuuuu)
返回
'main'

当我在Jupyter笔记本上运行代码时

print(\uuuuuu name\uuuuuuu=='\uuuuuuuu main\uuuuuuu')
返回
“True”

print(\uuuuu name\uuuuuu)
返回
“\uuuu main\uuuuu”

当代码在Google Cloud run上运行时,为什么(i)
print(
name)
返回
'False'
)和(ii)
print(
return
'main'
?如何解决这个问题

在执行代码之前,Python解释器读取源文件并定义 很少有特殊变量/全局变量,例如
\uu name\uu
全局变量

  • 如果python解释器运行该模块(源文件),则 在主程序中,它将特殊的
    \uuuu name\uuu
    变量设置为具有 值
    “\uuuu main\uuuuu”

  • 如果此文件是从另一个模块导入的,则将 设置为模块的名称

模块名称作为值提供给
\uu name\uu
全局变量

模块是包含Python定义和语句的文件

文件名是附加后缀.py的模块名

为了理解这个过程,你可以找到一些例子

这可能解释了为什么当您从Jupyter笔记本运行它时,它返回“true”,而当应用程序在云上运行它时,它返回“false”


请指定脚本的运行方式,并按照@John Hanley的要求提供代码。

文件名的值取决于文件的使用方式。考虑下面的文件名为“代码> Test.Py <代码>:

#test.py
打印(名称)
如果直接运行该文件,我们会得到:

$ python test.py
__main__
这将打印
“\uuuuu main”
,因为解释器将文件作为主程序运行

相反,如果我们导入该文件:

$ python -c "import test"
test
这将打印
test
,因为这是我们要导入的模块的名称

我猜您的云运行应用程序位于名为
main.py
的文件中,并且您正在使用
gunicorn
作为HTTP服务器。因此,当您指定以下内容时:

CMD exec gunicorn --bind :$PORT main:app
这告诉
gunicorn
main.py
文件导入
app
变量,因此
\uuuu name\uuu
将始终位于该文件中的
“main”


根据您在此
块中执行的操作,如果
块中的
,则可以完全取消此检查,并在每次导入文件时运行其中的代码。

编辑您的问题并正确显示您的实际代码格式。删除不适用服务的标记。请包括您的
Dockerfile
,特别是
CMD
行。