setup.py 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  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=['utils']
  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='repositoryZN',
  36. version='1.2.202501161028',
  37. description='Repository Package', # 描述信息
  38. author='Xie Zhou Yang', # 作者
  39. packages=find_packages(),
  40. cmdclass={
  41. 'build_py': CustomBuildPy,
  42. 'install': InstallCommand,
  43. },
  44. package_data={
  45. 'utils': ['*.pyc'],
  46. 'utils.minioUtil': ['*.pyc'],
  47. 'utils.rdbmsUtil': ['*.pyc']
  48. },
  49. exclude_package_data={'': ['*.py']}
  50. )
  51. # 获取 setup.py 所在的绝对路径
  52. setup_dir = os.path.abspath(os.path.dirname(__file__))
  53. # 编译打包后,删除pyc后缀文件
  54. for root, _, files in os.walk(setup_dir):
  55. for file in files:
  56. if file.endswith('.pyc') or file.endswith('.c'):
  57. print(os.path.join(root, file))
  58. os.remove(os.path.join(root, file))