我有以下我想打包的项目结构:
├── 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
会导致包含所有内容(即,它忽略我的exclude指令)。我不知道这是一个bug还是一个特性,但是仍然有可能使用MANIFEST.in
排除sdist
中的文件。
我可能只是使用find_packages文档中定义的通配符。
*test*
或*tests*
是我倾向于使用的,因为我们只保存单词为test
的测试文件名。简单易行。仅供参考:
我还建议在
.gitignore
中添加以下内容。并将构建和推送包移到pypi或您的私有存储库位到CI/CD中,使整个设置看起来干净整洁。
find_packages("src", exclude=["test"])
工作。诀窍是删除过时的文件,例如
core.egg-info
目录。在这种情况下,您需要删除src/core.egg-info
。这是我用过的
setup.py
:要创建分发,请运行:
要启用后一个命令,请运行:
pip install wheel
。我已经检查了创建的文件。它们不包含
test
,但包含core/__init__.py
,core/config/log.tmpl
文件。在项目根目录的
MANIFEST.in
中,添加然后用
python setup.py sdist
构建包相关问题 更多 >
编程相关推荐