使用setup.py bdist_rpm删除Django测试

时间:2012-04-16 20:15:04

标签: python django rpm setuptools setup.py

我正在尝试使用bdist_rpm从setup.py文件创建RPM时删除所有测试目录以及tests.py文件。我试过将它从find_packages()中排除,但它只删除了测试包,这只是问题的一半。任何tests.py文件都保留在没有tests目录的包中。如何删除测试目录和tests.py文件?这是我的setup.py

from setuptools import setup, find_packages                                                      

setup(name='mydjangoui',
      version='1.0',
      description='A django application',
      package_dir={'':'mydjangoui'},
      packages=find_packages('mydjangoui', 
          exclude=['tests.*', '*.tests.*', '*.tests', 'tests']),
)

我正在使用以下命令构建rpm:

python setup.py bdist_rpm

有一个app(marketing)包含tests.py,tests.pyo,tests.pyc以及一些有效的models.py和views.py文件。我想在创建RPM之前从此应用程序中删除tests.py [o | c]文件。

find_packages(exclude=['*tests*'])

的输出
>>> find_packages(exclude=['*tests*'])
['motd', 'assessment', 'account', 'platform', 'custom', 'catalog', 'utils', 'asset', 'editors', 'scheduler', 'base', 'marketing', 'results']

1 个答案:

答案 0 :(得分:1)

解决问题的最终更新:

使用以下find_packages()调用忽略名为tests的任何模块或子模块:

setup(name='mydjangoapp',
  version='1.0',
  description='A django app',
  package_dir={'':'mock'},
  packages=find_packages('mock', exclude=['tests', '*.tests']),
)

我们可能仍然在我们生成的RPM中有名为tests.py的文件。

要清除这些文件,请在项目文件夹中创建一个名为MANIFEST.in的文件,并在其中添加以下行,告诉distutils忽略任何文件夹中名为tests.py的文件:

recursive-exclude * tests.py

这不再包括,例如marketing/tests.py

如果您收到有关不存在的,先前定义的文件的警告,请在重新创建RPM软件包之前清理生成的文件:

python setup.py clean --all

希望有所帮助。