当我在外部烧瓶服务器上执行代码时,出现以下服务器端错误:
R0101, too-many-nested-blocks
这是造成悲伤的代码行:
2017-12-03 02:40:53 ", line
2017-12-03 02:40:53 430
2017-12-03 02:40:53
2017-12-03 02:40:53
2017-12-03 02:40:53 combinedheader = ["Protein", "MW", *listheadersSpC, *listheadersNSAF, *listheadersloge]
2017-12-03 02:40:53
2017-12-03 02:40:53
2017-12-03 02:40:53 ^
2017-12-03 02:40:53 SyntaxError
2017-12-03 02:40:53 :
2017-12-03 02:40:53 invalid syntax
2017-12-03 02:40:53
在本地,代码运行得很好。另请注意,以下代码在服务器上单独执行时不会返回错误:
combinedheader = ["Protein", "MW", *listheadersSpC, *listheadersNSAF, *listheadersloge]
返回:['嗨','有','a','d','e','f']
编辑:代码正在使用Python虚拟环境的Web应用程序上运行。 webapp和virtualenv python = 3.6。本地客户端运行相同版本的python,安装相同的模块。
答案 0 :(得分:1)
代码os.system("python myscript.py")
并不总是使用您当前的解释器。相反,它取决于环境变量。因此,您必须明确指定解释器的绝对路径。
对于大多数情况,您可以使用sys.executable
来获取当前的口译员。但是它不适用于uwsgi :-(,其中sys.executable
将返回uwsgi二进制文件的路径。所以在这种情况下,你必须硬编码virtualenv解释器的可执行路径,如下所示: os.system("path/to/venv/python myscript.py")
。