python 子进程 - cygwin 调用 - 加载共享库时出错

python subprocess - cygwin call - error while loading shared libraries

我正在尝试 运行 Windows 10 上的一个 .exe 文件,方法是在带有子进程的 Python 3.8 脚本中调用它。我想在 Cygwin 上执行所有操作。

以下是我的 Python 函数:

os.chdir(r"c:\cygwin64\bin")
cmd = ["bash", "-c", 'cd "C:/Users/usr/file"; ./myexefile']
subprocess.call(cmd)

这会给我错误

C:/Users/usr/file/myexefile.exe: error while loading shared libraries: ?: cannot open shared object file: No such file or directory

正在想办法解决问题,

我阅读了该特定错误的一些解决方案,在其他情况下,有人说应该更改路径变量,但由于函数调用在 Cygwin 中有效,我认为这行不通。

我希望有人能帮助我,我对这个话题很陌生。

编辑:我还发现命令“ls”不起作用。 "cd"、"pwd" 有效。

这看起来像 Windows python 试图 运行 Cygwin shell

os.chdir(r"c:\cygwin64\bin")
cmd = ["bash", "-c", 'cd "C:/Users/usr/file"; ./myexefile']
subprocess.call(cmd)

假设 myexefile 是一个 Cygwin 程序,因为 bash 不是 运行 带有登录选项 PATH 设置不正确,找不到所需的共享库。

如果您需要知道某个程序或共享库需要哪些 DLL:

$ objdump -x octave-5.2.0.exe |grep "DLL Name:"
        DLL Name: cygwin1.dll
        DLL Name: cygX11-6.dll
        DLL Name: cyggcc_s-seh-1.dll
        DLL Name: cygstdc++-6.dll
        DLL Name: KERNEL32.dll

已解决: 我通过将 C:/cygwin64/bin 添加到 Path 变量来修复它。