1

在使用 bdist_rpm 从 setup.py 文件创建 RPM 时,我试图删除所有测试目录以及 tests.py 文件。我尝试将它从 find_packages() 中排除,但它只删除了测试包,这只是问题的一半。任何 tests.py 文件都保留在没有测试目录的包中。如何同时删除测试目录和 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']
4

1 回答 1

1

最终更新解决问题:

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

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

不过,我们可能仍有tests.py在生成的 RPM 中命名的文件。

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

recursive-exclude * tests.py

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

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

python setup.py clean --all

希望有帮助。

于 2012-04-16T20:43:15.280 回答