wom*_*ble 23 python setuptools
我正在尝试使用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',
)
Run Code Online (Sandbox Code Playgroud)
mok*_*ok0 20
我在同一问题上浪费了几个小时,试图排除一个模块,我最终发现我必须删除*.egg-info和build目录,这在某种程度上保留了必须包含该模块的想法。
小智 19
我们使用以下约定从包中排除'tests'.
setup(
name="project",
packages=find_packages(exclude=("tests",)),
include_package_data=True,
test_suite='nose.collector',
)
Run Code Online (Sandbox Code Playgroud)
我们还使用MANIFEST.in来更好地控制include_package_data=True它的作用.
Mik*_*ton 11
我在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"],
Run Code Online (Sandbox Code Playgroud)
doc/由于我的图像数量,我的目录变得越来越大; 这意味着我的体型sdist增长超过500kB.原来我在我的MANIFEST.in...
include LICENSE CHANGES README.rst requirements.txt
recursive-exclude * __pycache__
recursive-exclude * *.pyc
recursive-exclude * *.pyo
recursive-exclude * *.orig
Run Code Online (Sandbox Code Playgroud)
我要排除我的doc目录的唯一办法就是MANIFEST.in...
prune doc*
Run Code Online (Sandbox Code Playgroud)
使用prune doc*突然doc/从sdisttarball中删除了我的所有目录.所以,看起来你只需要在MANIFEST.in文件中使用它...
prune tests*
Run Code Online (Sandbox Code Playgroud)
这是我在setuptools手册中找到的:
from setuptools import setup, find_packages
...
packages = find_packages(exclude=["*.tests", "*.tests.*", "tests.*", "tests"]),
Run Code Online (Sandbox Code Playgroud)
在我的情况下,以下内容足以排除顶级测试目录:
packages = find_packages(exclude=["tests.*", "tests"]),
Run Code Online (Sandbox Code Playgroud)
呃,setuptools 让这真的很棘手:(
我不知道这是否是您想要的,但我从事的一个项目使用了两件事的组合:
from setuptools import setup, find_packages
...
packages = find_packages(exclude=['tests']),
data_files = os.walk(path_to_files),
Run Code Online (Sandbox Code Playgroud)
小智 5
另一个适用于我的案例的解决方案。显然:packages=setuptools.find_packages(exclude=["tests.*", "tests"]),
没有用,但是:
packages=setuptools.find_packages(exclude=["*tests.*", "*tests"]),
Run Code Online (Sandbox Code Playgroud)
在单词开头添加星号就可以了。
| 归档时间: |
|
| 查看次数: |
18286 次 |
| 最近记录: |