从python调用Cygwin失败:加载共享库时出错:?:无法打开共享对象文件:没有这样的文件或目录

从python调用Cygwin失败:加载共享库时出错:?:无法打开共享对象文件:没有这样的文件或目录,python,windows,cygwin,Python,Windows,Cygwin,我有一个使用Cygwin用GCC编译的C程序,我想从windows7中的python程序运行它。我尽量使用子流程模块,但得到的是“加载共享库时出错…”,没有其他信息 谷歌搜索导致了以下两个问题:;一个没有答案,另一个接受的答案没有(一读时)完全解释如何修复它,还有一条评论承诺了近两年前的完整解决方案 事实上,我已经修复了我的问题,但我想在这里记录它,以防其他人也有同样的问题。第二个问题的答案是正确的(至少在我的情况下)-这一切都与工作目录的位置有关,以及它是否包含cygwin DLL有关 我

我有一个使用Cygwin用GCC编译的C程序,我想从windows7中的python程序运行它。我尽量使用子流程模块,但得到的是“加载共享库时出错…”,没有其他信息

谷歌搜索导致了以下两个问题:;一个没有答案,另一个接受的答案没有(一读时)完全解释如何修复它,还有一条评论承诺了近两年前的完整解决方案

事实上,我已经修复了我的问题,但我想在这里记录它,以防其他人也有同样的问题。

第二个问题的答案是正确的(至少在我的情况下)-这一切都与工作目录的位置有关,以及它是否包含cygwin DLL有关

我从python程序的工作目录中调用了
C:\\cygwin\\bin\\bash.exe
,这意味着bash.exe正在python工作目录中寻找它需要的任何库,这些库位于C:\cygwin\bin中

由于我在python中使用Popen,如果我在Popen调用中包含参数
cwd=“C:\\cygwin\\bin\\”
,它将启动bash.exe,当前工作目录设置为cygwin\bin,一切正常

编辑:
或者,将相关DLL复制到python程序的工作目录也会产生相同的效果。但是,仅复制cygwin1.dll是不起作用的(至少对我来说是这样),而且还有很多其他cygwin dll。如果你能找出你需要的,然后复制它们(或全部复制),那也行。

你的路径(或当前目录)中有cygwin.dll吗?事实上,这是一个问题。我认为这不是问题所在,因为我链接到的问题中的评论指出,移动dll没有帮助。但是我没有检查,我很困惑。你承认这条路是问题所在,但你的评论表明这是对SO社区的某种测试?什么?不,只是尽管花了整个下午的时间寻找,我还是找不到一个明确的答案,我想让其他人免于沮丧。我的问题明确地说我解决了我的问题,但我想记录下来。复制cygwin.dll可能也很有效,但我能找到的唯一答案是“复制cygwin依赖的dll”,但没有说明它们是什么,问题中的其他评论说这根本不起作用,所以我没有尝试。你想让人告诉你系统上cygwin的安装位置吗?我很好奇——如果你解决了另一篇文章中提到的问题,为什么不在那里添加建议的解决方案,而不是打开一个新的SO问题?