Manual-Labeling-Tool/WindSpeedModel/WindSpeedTools/setup.py

65 lines
2.0 KiB
Python
Raw Normal View History

2025-11-20 09:32:46 +00:00
from setuptools import setup
from setuptools.extension import Extension
from Cython.Distutils import build_ext
from Cython.Build import cythonize
import numpy
from pathlib import Path
import shutil
import sys
class MyBuildExt(build_ext):
def run(self):
build_ext.run(self)
build_dir = Path(self.build_lib)
root_dir = Path(__file__).parent
target_dir = build_dir if not self.inplace else root_dir
self.copy_file(Path('./WindSpeedTools') / '__init__.py', root_dir, target_dir)
#self.copy_file(Path('./pkg2') / '__init__.py', root_dir, target_dir)
self.copy_file(Path('.') / '__init__.py', root_dir, target_dir)
def copy_file(self, path, source_dir, destination_dir):
if not (source_dir / path).exists():
return
shutil.copyfile(str(source_dir / path), str(destination_dir / path))
# 判断平台和编译器选择正确的OpenMP标志
compile_args = []
link_args = []
if sys.platform == "win32":
# 在Windows上使用MSVC编译器
compile_args = ['/openmp'] # 仅传递给编译器
# 链接器不需要此选项,因此 link_args 为空
else:
# 在Linux/macOS上使用GCC/Clang编译器
compile_args = ['-fopenmp']
link_args = ['-fopenmp'] # 对于GCC通常需要同时传递给编译器和链接器
setup(
name="MyModule",
ext_modules=cythonize(
[
#Extension("pkg1.*", ["root/pkg1/*.py"]),
Extension("pkg2.*", ["WindSpeedModel.pyx"],
# 添加OpenMP支持
extra_compile_args=compile_args, # 选项只给编译器
extra_link_args=link_args, # 链接器使用单独的选项列表
),
#Extension("1.*", ["root/*.py"])
],
build_dir="build",
compiler_directives=dict(
always_allow_keywords=True
)),
cmdclass=dict(
build_ext=MyBuildExt
),
packages=[],
include_dirs=[numpy.get_include()],
)
# 指令: python setup.py build_ext --inplace