如何使用setup.py安装动态库?
How to install dynamic library using setup.py?
我想分发一个 Python 包,它具有闭源依赖。我正在使用 setup.py,如果我也使用 setup.py 进行编译,一切正常。
this question nor answers to that question 的答案都没有解决我的问题。
我有以下文件结构:
.
├── closed_source
│ ├── compiled.so
├── python_modules
│ ├── file1.py
│ ├── file2.py
│ ├── ...
│ └── __init__.py
└── setup.py
我还尝试将 compiled.so
包含在 python_modules
中。在 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,
)
您将必须 vendor 依赖项。最简单的方法是将依赖项 包含在 您的 python 包中,而不是外部。
setuptools
要求您包含一个 MANIFEST.in
文件以在您的发行版中包含非软件包、非 python 文件。
有关如何执行此操作的示例,请参阅 this 项目。
您的项目结构应如下所示:
my_package
|-- vendor
|-- compiled.so
|-- __init__.py
|-- file1.py
|-- file2.py
setup.py
您还需要使用额外的相对前缀导入您销售的库
from .vendor import compiled
我想分发一个 Python 包,它具有闭源依赖。我正在使用 setup.py,如果我也使用 setup.py 进行编译,一切正常。
this question nor answers to that question 的答案都没有解决我的问题。
我有以下文件结构:
.
├── closed_source
│ ├── compiled.so
├── python_modules
│ ├── file1.py
│ ├── file2.py
│ ├── ...
│ └── __init__.py
└── setup.py
我还尝试将 compiled.so
包含在 python_modules
中。在 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,
)
您将必须 vendor 依赖项。最简单的方法是将依赖项 包含在 您的 python 包中,而不是外部。
setuptools
要求您包含一个 MANIFEST.in
文件以在您的发行版中包含非软件包、非 python 文件。
有关如何执行此操作的示例,请参阅 this 项目。
您的项目结构应如下所示:
my_package
|-- vendor
|-- compiled.so
|-- __init__.py
|-- file1.py
|-- file2.py
setup.py
您还需要使用额外的相对前缀导入您销售的库
from .vendor import compiled