from setuptools import setup, find_packages
from distutils.extension import Extension
#用于定义 Cython 扩展模块
from Cython.Distutils import build_ext
#用于构建 Cython 扩展
import numpy
ext_modules = [Extension("traj_dist.cydist.basic_geographical", [ "traj_dist/cydist/basic_geographical.pyx" ]),
Extension("traj_dist.cydist.basic_euclidean", [ "traj_dist/cydist/basic_euclidean.pyx" ]),
Extension("traj_dist.cydist.sspd", [ "traj_dist/cydist/sspd.pyx" ]),
Extension("traj_dist.cydist.dtw", [ "traj_dist/cydist/dtw.pyx" ]),
Extension("traj_dist.cydist.lcss", [ "traj_dist/cydist/lcss.pyx" ]),
Extension("traj_dist.cydist.hausdorff", [ "traj_dist/cydist/hausdorff.pyx" ]),
Extension("traj_dist.cydist.discret_frechet", [ "traj_dist/cydist/discret_frechet.pyx" ]),
Extension("traj_dist.cydist.frechet", [ "traj_dist/cydist/frechet.pyx" ]),
#Extension("traj_dist.cydist.distance", [ "traj_dist/cydist/distance.pyx" ]),
Extension("traj_dist.cydist.segment_distance", [ "traj_dist/cydist/segment_distance.pyx" ]),
Extension("traj_dist.cydist.sowd", [ "traj_dist/cydist/sowd.pyx" ]),
Extension("traj_dist.cydist.erp", [ "traj_dist/cydist/erp.pyx" ]),
Extension("traj_dist.cydist.edr", [ "traj_dist/cydist/edr.pyx" ])]
'''
通过 Extension 类创建了多个扩展模块的实例。每个实例包含了模块名和对应的 .pyx 文件路径
'''
setup(
name = "trajectory_distance",
version = "1.0",
author = "Brendan Guillouet",
author_email = "brendan.guillouet@gmail.com",
cmdclass = { 'build_ext': build_ext },
ext_modules=ext_modules,
include_dirs=[numpy.get_include()],
install_requires = ["numpy>=1.9.1", "cython>=0.21.2", "shapely>=1.5.6", "Geohash"],
description = "Distance to compare trajectories in Cython",
packages = ["traj_dist", "traj_dist.cydist", "traj_dist.pydist"],
)
'''
设置函数调用:
name = "trajectory_distance":包的名称。
version = "1.0":指定包的版本。
author 和 author_email:作者和联系邮箱。
cmdclass = {'build_ext': build_ext}:指定 build_ext 命令用于构建 Cython 扩展。
ext_modules=ext_modules:包含之前定义的所有 Cython 扩展模块。
include_dirs=[numpy.get_include()]:添加 numpy 的头文件目录,这对于 Cython 扩展来说是必需的。
install_requires:列出了安装这个包需要的依赖项。
description:提供了对包的简短描述。
packages:列出了包中的所有 Python 包。
'''
按照Cython笔记:基本使用方法-CSDN博客 的说法,下面这样写也行
from distutils.core import setup
from Cython.Build import cythonize
ext_modules = cythonize([
"traj_dist/cydist/basic_geographical.pyx",
"traj_dist/cydist/basic_euclidean.pyx",
"traj_dist/cydist/sspd.pyx",
"traj_dist/cydist/dtw.pyx",
"traj_dist/cydist/lcss.pyx",
"traj_dist/cydist/hausdorff.pyx",
"traj_dist/cydist/discret_frechet.pyx",
"traj_dist/cydist/frechet.pyx",
"traj_dist/cydist/segment_distance.pyx",
"traj_dist/cydist/sowd.pyx",
"traj_dist/cydist/erp.pyx",
"traj_dist/cydist/edr.pyx"
])
setup(
name='trajectory_distance',
ext_modules=ext_modules
)