【问题标题】:Remove Django tests using setup.py bdist_rpm使用 setup.py bdist_rpm 删除 Django 测试
【发布时间】:2012-04-28 04:34:46
【问题描述】:

在使用 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

有一个应用程序 (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']

【问题讨论】:

  • 可以添加find_packages(exclude=['*tests*'])的输出吗?
  • 我已经添加了上面的输出和其他一些细节。

标签: python django rpm setuptools setup.py


【解决方案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

希望对您有所帮助。

【讨论】:

  • 这似乎不起作用。这包括测试目录以及任何tests.py
  • 感谢更详细的解释,但是,这仍然包括我自己的应用程序的测试。当我查看构建后的 RPM 时,我仍然看到包含以下内容:/usr/lib/python2.6/site-packages/marketing/tests.py、/usr/lib/python2.6/site-packages /marketing/tests.pyc,/usr/lib/python2.6/site-packages/marketing/tests.pyo。我想确保这些也被删除。
  • 我误传了。 'django' 只是我创建的一个目录,用于托管我的 django 应用程序。这不是实际的 django 框架。 “营销”是我在这个目录下的一个应用程序。我将更新原始问题以使其更易于理解。
  • 感谢您的更新。但是,marketing/tests.py 仍然包括在内。我什至尝试过 ['tests', '.tests', '*tests']。它只是真的想将这些测试保留在 RPM 中!您希望看到哪些代码可能会有所帮助?
  • @intargc: 你必须创建一个MANIFEST.in 文件,然后它应该能按预期工作......
猜你喜欢
  • 2013-11-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-06
相关资源
最近更新 更多