【发布时间】:2021-06-02 08:31:13
【问题描述】:
我在 Windows 服务器上有一个名为 optimize.py 的 python 脚本,它使用 os.system() 方法调用其他三个 python 脚本 4 次。
print('Creating input files for optimization algorithm...\n')
os.system("example.py 2 2 0 1")
os.system("example.py 3 3 0 1")
os.system("example.py 4 4 0 1")
os.system("example.py -1 10 0 1")
当我自己执行 optimize.py 时,这非常有效。但是,当它从运行在同一台服务器上的 ColdFusion 应用程序执行时,每次尝试调用 example.py 时都会收到错误“找不到默认 Python”。脚本的其余部分运行良好。
这是执行 python 脚本的 ColdFusion 代码:
<cf_exec cmd="cmd.exe">
cd C:\xxx_Optimization\
"C:\Program Files\Microsoft SQL Server\Client SDK\ODBC\170\Tools\Binn\bcp.exe" [SQL_Table] out [directory] -c -t, -U [user] -P [password] -S [server]
cd C:\xxx_Optimization\pyOptimization\
python C:\xxx_Optimization\pyOptimization\optimize.py
<cfoutput>#pyUniqueZipCommand#</cfoutput>
date /t > pyDone.txt
</cf_exec>
我已经将 python 添加到 PATH 中,并且我也遵循了 this post 中的答案,但无济于事。谁能告诉我我在这里做错了什么,或者建议替代 os.system 来执行这些脚本?
编辑:我也尝试在 OS.system 方法中指定整个文件路径,但我收到了同样的错误。
【问题讨论】:
-
如果从
cf_exec cmd.exe运行ftype Python.File会得到什么响应? -
上面写着
Python.file="C:\Windows\py.exe" "%L" %* -
所以
Can't find a default Python错误只会在尝试从初始 python 脚本中调用更多 python 脚本时返回? -
我没有合适的环境来测试这个,但听起来你可能需要使用
os.system(sys.executable + "example.py 2 2 0 1")或os.system("python example.py 2 2 0 1") -
是的,这是正确的,只有当我试图从初始脚本中调用 python 脚本时。你的建议似乎已经解决了这个问题——我最终选择了
os.system("python example.py 2 2 0 1")。如果您将该评论复制到答案中,我会将其标记为正确的。非常感谢!
标签: python coldfusion windows-server