python *仅在服务器上列出语法错误,代码在本地客户端上正常工作

时间:2017-12-03 02:59:15

标签: python flask python-3.6

当我在外部烧瓶服务器上执行代码时,出现以下服务器端错误:

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,安装相同的模块。

1 个答案:

答案 0 :(得分:1)

代码os.system("python myscript.py")并不总是使用您当前的解释器。相反,它取决于环境变量。因此,您必须明确指定解释器的绝对路径。

对于大多数情况,您可以使用sys.executable来获取当前的口译员。但是它不适用于uwsgi :-(,其中sys.executable将返回uwsgi二进制文件的路径。所以在这种情况下,你必须硬编码virtualenv解释器的可执行路径,如下所示: os.system("path/to/venv/python myscript.py")