繁体   English   中英

如何使用 setup.py 安装动态库?

[英]How to install dynamic library using setup.py?

我想分发具有闭源依赖关系的 Python package。 我正在使用 setup.py,如果我也使用 setup.py 进行编译,一切正常。

这个问题的答案和那个问题的答案都不能解决我的问题。

我有以下文件结构:

.
├── closed_source
│   ├── compiled.so
├── python_modules
│   ├── file1.py
│   ├── file2.py
│   ├── ...
│   └── __init__.py
└── setup.py

我还尝试在python_modules中包含compiled.so file1.py我使用import compiled失败。

以下工作,但默默地未能包含动态库:

setup(
    name='my_package',
    version=0.1,
    packages=['python_modules'],
    package_dir={'python_modules': 'python_modules'},
    package_data={'': ['closed_source/compiled.so']}, # also tried using key compiled
    include_package_data=True,
)

您将不得不提供依赖项。 最简单的方法是将依赖项包含在 python package内部,而不是外部。

setuptools要求您包含一个MANIFEST.in文件以在您的发行版中包含非包、非 python 文件。

有关如何执行此操作的示例,请参阅项目。

您的项目结构应如下所示:

my_package
|-- vendor
    |-- compiled.so
|-- __init__.py
|-- file1.py
|-- file2.py
setup.py

您还需要使用附加的相对前缀导入您的供应商库

from .vendor import compiled

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM