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

2024-10-03 17:27:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图在Windows10上运行一个.exe文件,方法是在带有子进程的Python3.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上执行了该文件,没有任何问题
  • 我用上述python脚本运行了其他命令(cd、pwd,…),同样没有问题

我在其他上下文中阅读了该特定错误的一些解决方案,说应该更改路径变量,但由于函数调用在Cygwin中起作用,我认为这不起作用

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

编辑:我还发现命令“ls”不起作用。“cd”,“pwd”可以工作


Tags: 文件命令脚本cmdusr错误pwdcd
2条回答

这看起来像是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没有使用login选项运行 路径设置不正确,未找到所需的共享库

如果您需要知道程序或共享库需要哪些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变量来修复它

相关问题 更多 >