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上执行文件shell,没有问题
- 我 运行 其他命令(cd,pwd,...)与所述 python 脚本,同样没有问题。
我阅读了该特定错误的一些解决方案,在其他情况下,有人说应该更改路径变量,但由于函数调用在 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
变量来修复它。
我正在尝试 运行 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上执行文件shell,没有问题
- 我 运行 其他命令(cd,pwd,...)与所述 python 脚本,同样没有问题。
我阅读了该特定错误的一些解决方案,在其他情况下,有人说应该更改路径变量,但由于函数调用在 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
变量来修复它。