我正在尝试使用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) 我对setuptools很新.我已经看到了一些类似的问题,它有点疯狂,我似乎遵循我看到的建议,但setuptools仍然做了一些不同于我想要的东西.
这是我的项目的结构:
.
..
package1/
__init__.py
abc.py
...
tests/
__init__.py
test_package1.py
LICENSE
README.md
RELEASE
setup.py
Run Code Online (Sandbox Code Playgroud)
这是我的setup.py的内容:
#!/usr/bin/env python
import os
#from distutils.core import setup
from setuptools import setup, find_packages
setup(
name='package1',
version='1.1',
test_suite="tests",
packages=find_packages(exclude=['tests']),
include_package_data=True,
package_data = {
'': ['LICENSE', 'README.md5', 'RELEASE']
},
)
Run Code Online (Sandbox Code Playgroud)
另外,在我的清单文件中,我有:
include LICENSE
include RELEASE
include README.md
Run Code Online (Sandbox Code Playgroud)
我用以下内容构建tar:
python setup.py sdist
Run Code Online (Sandbox Code Playgroud)
我想要:
tests从源代码分发中排除目录;相反,这是发生的事情:
tests 目录仍然在创建的tar存档中,并安装到site-packages;我没有想法,有人可以向我解释我做错了什么以及如何解决它?