Python导入找不到共享对象文件(C+;+;扩展名) 我正在为Python 3创建一个C++扩展模块。编译setup.py文件编译得很好,但是当我要导入新模块时,我得到了

Python导入找不到共享对象文件(C+;+;扩展名) 我正在为Python 3创建一个C++扩展模块。编译setup.py文件编译得很好,但是当我要导入新模块时,我得到了,python,c++,linux,c++17,strace,Python,C++,Linux,C++17,Strace,ImportError:libMyLib.so:无法打开共享对象文件:没有这样的文件或目录 这是通往我的道路。因此: /path/to/lib-cc7/libMyLib.so 我尝试以不同的方式在setup.py中导入库,尝试在终端和.bash\u配置文件中设置并重新设置LD\u LIBRARY\u PATH变量。我已尝试在sys.path中设置路径 在import语句之前运行此代码时: print(os.environ.get("LD_LIBRARY_PATH")) print(os.env

ImportError:libMyLib.so:无法打开共享对象文件:没有这样的文件或目录

这是通往我的道路。因此:
/path/to/lib-cc7/libMyLib.so

我尝试以不同的方式在setup.py中导入库,尝试在终端和.bash\u配置文件中设置并重新设置LD\u LIBRARY\u PATH变量。我已尝试在sys.path中设置路径

在import语句之前运行此代码时:

print(os.environ.get("LD_LIBRARY_PATH")) 
print(os.environ.get("PYTHONPATH"))
我得到了正确的库目录的路径

当我运行strace时,我需要显示到other.so's的路径,我看到它搜索
libMyLib.so
,但它只是搜索所有其他目录和
/path/to/lib-cc7/
。在其他库搜索中,它检查
/path/to/lib-cc7/

我已经检查过图书馆有5次了

看起来不管我做什么

将MyModule.MySubModule作为子模块导入

始终返回相同的导入错误。还有什么我没试过的吗?为什么Python似乎在错误的地方寻找我的目标呢

编辑1:

这就是my setup.py(本质上)的外观:

Submodule1 = Extension('Module.Submodule1', sources=['Module/Submodule1/submod1.cpp'], language = C++, libraries=[..long list of libraries..],)

Submodule2 = Extension('Module.Submodule2', sources=['Module/Submodule2/submod2.cpp'], language = C++, libraries=[..long list of libraries..],)

setup(name = "Module", version = '1.0', 
      packages = ['Module', 'Module.Submodule1', 'Module.Submodule2'],
      ext_modules = [Submodule1, Submodule2], )

您的
setup.py
是什么样子的?我特别感兴趣的是参数
packages
include\u package\u data
。只有当这两个参数不正确时,我才会出现此错误,从而将
.so
文件放在错误的位置(或者根本不将它们包含在包中)。@Eqomatic edit已经完成。你的
setup.py
看起来像什么?我特别感兴趣的是参数
packages
include\u package\u data
。只有当这两个参数不正确时,我才会出现此错误,从而将
.so
文件放在错误的位置(或根本不将其包含在包中)。@Eqomatic edit已完成