当前位置:  开发笔记 > 编程语言 > 正文

从setuptools包中排除顶级目录

如何解决《从setuptools包中排除顶级目录》经验,为你挑选了3个好方法。

我正在尝试使用setuptools将Python项目放入tarball中.问题是setuptools似乎不喜欢源树最初设置的方式(不是我,我必须添加).我实际想要分发的所有内容都在顶级目录中,而不是像setuptools docs谈论的子目录中那样.

树有一个目录,tests我不想在已发布的包中拥有该目录.然而,使用exclude_package_data似乎并没有实际排除,我想弄清楚我做错了什么.

setup.py看起来像这样,在相关部分:

setup(
  name="project",
  packages=[''],
  include_package_data=True,
  exclude_package_data={'': ['tests']},
  test_suite='nose.collector',
)

小智.. 19

我们使用以下约定从包中排除'tests'.

setup(
   name="project",
   packages=find_packages(exclude=("tests",)),
   include_package_data=True, 
   test_suite='nose.collector',
)

我们还使用MANIFEST.in来更好地控制include_package_data=True它的作用.



1> 小智..:

我们使用以下约定从包中排除'tests'.

setup(
   name="project",
   packages=find_packages(exclude=("tests",)),
   include_package_data=True, 
   test_suite='nose.collector',
)

我们还使用MANIFEST.in来更好地控制include_package_data=True它的作用.


奇怪的是,使用`exclude =()`对我来说还不够.根据http://stackoverflow.com/a/11669299/472876,我必须在我的`MANIFEST.in`中使用`recursive-exclude tests*'才能获得成功.

2> Mike Penning..:

我在setup.py...中有以下内容

setup(name='pyfoo',
      version="1.0.2",
      description='Example for stack overflow',
      url='http://stackoverflow.com/',
      author='David Michael Pennington',
      author_email='mike /|at|\ pennington.net',
      license='GPL',
      platforms='any',
      keywords='Stack Overflow Example',
      entry_points = "",
      long_description=read('README.rst'),
      include_package_data=True,  # Checks MANIFEST.in for explicit rules
      #                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      packages=find_packages(),
      use_2to3=True,
      zip_safe=False,
      setup_requires=["setuptools_hg"],

doc/由于我的图像数量,我的目录变得越来越大; 这意味着我的体型sdist增长超过500kB.原来我在我的MANIFEST.in...

include LICENSE CHANGES README.rst requirements.txt
recursive-exclude * __pycache__
recursive-exclude * *.pyc
recursive-exclude * *.pyo
recursive-exclude * *.orig

我要排除我的doc目录的唯一办法就是MANIFEST.in...

prune doc*

使用prune doc*突然doc/sdisttarball中删除了我的所有目录.所以,看起来你只需要在MANIFEST.in文件中使用它...

prune tests*



3> Enno Gröper..:

这是我在setuptools手册中找到的:

from setuptools import setup, find_packages
...
packages = find_packages(exclude=["*.tests", "*.tests.*", "tests.*", "tests"]),

在我的情况下,以下内容足以排除顶级测试目录:

packages = find_packages(exclude=["tests.*", "tests"]),

推荐阅读
pan2502851807
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有