setup.py 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. from setuptools import setup, find_packages
  2. from setuptools.command.build_py import build_py
  3. from setuptools.command.install import install
  4. import compileall
  5. import os
  6. import sys
  7. import shutil
  8. from pathlib import Path
  9. compileDirs=['algorithm']
  10. class CustomBuildPy(build_py):
  11. def run(self):
  12. # 获取当前 Python 版本信息
  13. py_version = f".cpython-{sys.version_info.major}{sys.version_info.minor}"
  14. for dir in compileDirs:
  15. for root,_,subFiles in os.walk(dir):
  16. compileall.compile_dir(root, force=True)
  17. for file in subFiles:
  18. if file.endswith('.pyc'):
  19. pyc_path = os.path.join(root, file)
  20. new_File = file.replace(py_version, '')
  21. new_path=os.path.join(Path(root).parent,new_File)
  22. shutil.move(pyc_path, new_path)
  23. super().run()
  24. class InstallCommand(install):
  25. def run(self):
  26. super().run()
  27. # Remove all .py files from the installed package
  28. # 若用于开发,可查看导入的自定义package 则注释本代码段
  29. # 若用于部署交付,可应用本代码
  30. # for root, _, files in os.walk(self.install_lib):
  31. # for file in files:
  32. # if file.endswith('.py'):
  33. # os.remove(os.path.join(root, file))
  34. setup(
  35. name='dataAnalysisBusiness',
  36. version='1.2.202505141510',
  37. description='Data Analysis Business Package', # 描述信息
  38. author='Xie Zhou Yang', # 作者
  39. packages=find_packages(),
  40. cmdclass={
  41. 'build_py': CustomBuildPy,
  42. 'install': InstallCommand,
  43. },
  44. package_data={
  45. 'algorithm': ['*.pyc']
  46. },
  47. exclude_package_data={'': ['*.py']}
  48. )
  49. # 获取 setup.py 所在的绝对路径
  50. setup_dir = os.path.abspath(os.path.dirname(__file__))
  51. # 编译打包后,删除pyc后缀文件
  52. for root, _, files in os.walk(setup_dir):
  53. for file in files:
  54. if file.endswith('.pyc') or file.endswith('.c'):
  55. print(os.path.join(root, file))
  56. os.remove(os.path.join(root, file))