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已完成