gpt4 book ai didi

python - 通过 VB 运行 Python 脚本时遇到问题

转载 作者:太空宇宙 更新时间:2023-11-03 21:13:23 24 4
gpt4 key购买 nike

目标是接收图像路径并将其作为参数传递给 Python 程序,然后接收结果。

这是通过使用 VB 的 Web 应用程序(在 IIS 服务器上)完成的,它完美地工作除了当我导入 python 模块 OpenCV(在 Python 中导入为 cv2 , 进一步来说)。

更令人困惑的是,当直接从 cmd 执行时,脚本与导入的 cv2 模块完美运行。只有当 VB 代码运行包含 import cv2 行的脚本时,它才会起作用。

为了清楚起见,我将在下面展示一些代码。

以图像路径作为参数运行 Python 脚本的 VB 代码:

Dim Processtask As New System.Diagnostics.Process()
Processtask.StartInfo.FileName = "cmd.exe"
Processtask.StartInfo.Arguments = "/c python " + path.ToString + " " + ImageURL.ToString
Processtask.StartInfo.UseShellExecute = False
Processtask.StartInfo.RedirectStandardOutput = True
Processtask.StartInfo.RedirectStandardError = True
Processtask.StartInfo.CreateNoWindow = True
Processtask.Start()
Processtask.WaitForExit()
output = Processtask.StandardOutput.ReadToEnd()

Python代码片段接收图片路径:

import sys
import cv2
if __name__ == "__main__":
im = str(sys.argv[1])
print(im)

对于导致此问题的原因,我已经想不出可能的想法了。任何建议将不胜感激。

编辑

我设法找到了完整的错误信息,内容如下:

System.Exception: System.IO.StreamReader
System.InvalidOperationException: Process has exited, so the requested
information is not available.
at System.Diagnostics.Process.EnsureState(State state) at
System.Diagnostics.Process.get_ProcessName()
at System.Diagnostics.Process.ToString()

最佳答案

最终找到了解决方案,我会把它贴在这里以防其他人遇到这个问题:

安装在托管 Web 应用程序的服务器上的 opencv 的 dll 文件具有不同的访问权限。从 Web 应用程序调用时文件被拒绝访问,而调用的其余模块没有问题。

我用了sysinternals process monitor跟踪哪些文件被拒绝访问并能够手动更改权限。不是很优雅,但它成功了。

关于python - 通过 VB 运行 Python 脚本时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50364352/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com