numpy.distutils.core.setup函数详解及示例
numpy.distutils.core.setup函数是用于设置和配置构建和安装Python扩展模块的函数。它是numpy.distutils模块的一部分,是基于标准库distutils的扩展。setup函数接受一个字典作为参数,用于指定各种扩展模块的属性和选项。
以下是numpy.distutils.core.setup函数的常用参数和示例:
1. name: 扩展模块的名称
示例:name="myextension"
2. version: 扩展模块的版本号
示例:version="1.0"
3. description: 扩展模块的描述
示例:description="My Extension Module"
4. author: 扩展模块的作者
示例:author="John Smith"
5. author_email: 作者的电子邮件地址
示例:author_email="john@example.com"
6. url: 扩展模块的项目主页 URL
示例:url="https://github.com/john/myextension"
7. packages: 扩展模块的Python包列表
示例:packages=["myextension"]
8. package_dir: 扩展模块的Python包的目录
示例:package_dir={"myextension": "src"}
9. ext_modules: 扩展模块的C/C++源文件列表
示例:ext_modules=[Extension("myextension", ["src/myextension.c"])]
10. classifiers: 扩展模块的分类器列表,用于标识模块的属性和性质
示例:classifiers=[
"Development Status :: 3 - Alpha",
"License :: OSI Approved :: MIT License",
"Programming Language :: Python",
"Programming Language :: Python :: 3.7",
"Topic :: Software Development :: Libraries :: Python Modules"
]
11. install_requires: 扩展模块的依赖列表,用于指定扩展模块所依赖的其他模块或库
示例:install_requires=["numpy", "scipy"]
12. include_dirs: 扩展模块的头文件搜索路径列表
示例:include_dirs=["/usr/local/include"]
13. library_dirs: 扩展模块的库文件搜索路径列表
示例:library_dirs=["/usr/local/lib"]
14. libraries: 扩展模块的链接库列表
示例:libraries=["mylib"]
15. extra_compile_args: 扩展模块的额外编译参数
示例:extra_compile_args=["-O3", "-std=c++11"]
16. extra_link_args: 扩展模块的额外链接参数
示例:extra_link_args=["-L/opt/local/lib", "-lmylib"]
示例:
from numpy.distutils.core import setup, Extension
setup(
name="myextension",
version="1.0",
description="My Extension Module",
author="John Smith",
author_email="john@example.com",
url="https://github.com/john/myextension",
packages=["myextension"],
package_dir={"myextension": "src"},
ext_modules=[Extension("myextension", ["src/myextension.c"])],
classifiers=[
"Development Status :: 3 - Alpha",
"License :: OSI Approved :: MIT License",
"Programming Language :: Python",
"Programming Language :: Python :: 3.7",
"Topic :: Software Development :: Libraries :: Python Modules"
],
install_requires=["numpy", "scipy"],
include_dirs=["/usr/local/include"],
library_dirs=["/usr/local/lib"],
libraries=["mylib"],
extra_compile_args=["-O3", "-std=c++11"],
extra_link_args=["-L/opt/local/lib", "-lmylib"]
)
以上的示例配置了一个名为"myextension"的扩展模块,它包含一个名为"myextension.c"的C源文件。模块的基本属性和选项被指定为字符串,列表或字典。在这个示例中,我们指定了扩展模块的名称,版本号,描述,作者和作者的电子邮件地址。我们还指定了模块的项目主页URL,Python包的路径,依赖关系和其他编译和链接参数。
通过调用numpy.distutils.core.setup`函数并将设置参数传递给它,我们可以配置并构建这个扩展模块。这个函数会生成适当的构建和安装命令,然后将它们传递给底层的distutils工具来执行构建和安装操作。
