我有以下的项目结构,希望能够打包:
├── doc
│ └── source
├── src
│ ├── core
│ │ ├── config
│ │ │ └── log.tmpl
│ │ └── job
│ ├── scripts
│ └── test
└── tools
我希望把core
打包到src
下,但排除test
。这是我不成功的尝试:
setup(name='core',
version=version,
package_dir = {'': 'src'}, # Our packages live under src but src is not a package itself
packages = find_packages("src", exclude=["test"]), # I also tried exclude=["src/test"]
install_requires=['xmltodict==0.9.0',
'pymongo==2.7.2',
'ftputil==3.1',
'psutil==2.1.1',
'suds==0.4',
],
include_package_data=True,
)
我知道可以使用MANIFEST.in文件来排除test
, 但如果您能向我展示如何使用setup
和find_packages
来实现这一点,我会很高兴。
更新:
经过一些尝试,我意识到使用python setup.py install
构建软件包会产生我期望的结果(即,排除test
)。然而,使用python setup.py sdist
会导致所有东西都被包括在内(即,它忽略了我的排除指令)。我不知道这是一个bug还是一个特性,但仍然有可能使用MANIFEST.in
排除sdist
中的文件。
test
是 Python 包还是只是一个包含顶级 Python 脚本的目录? - jfs__init__.py
文件)。 - oz123setuptools.find_packages
方法,我们可以发现该方法返回收集的基础包及其子包。exclude ='test'
确切地删除了顶级包,但该方法将返回test
的子包。 正确的值可能是exclude = ['test','test.*']
。 - alexzshl