【问题标题】:"Can't find a default python" When executing python script through OS.system method from ColdFusion“找不到默认 python”通过 ColdFusion 的 OS.system 方法执行 python 脚本时
【发布时间】: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


【解决方案1】:

如果 Can't find a default Python 错误仅在尝试从初始 python 脚本中调用更多 python 脚本时返回 - 即如果你的 ftypePATH 设置已知是好的 - 那么问题出在新的上下文,试试:

os.system(sys.executable + "example.py 2 2 0 1")

os.system("python example.py 2 2 0 1")

【讨论】:

    猜你喜欢
    • 2014-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-14
    • 2012-02-02
    • 1970-01-01
    相关资源
    最近更新 更多