gpt4 book ai didi

python - setup.py sdist 排除子目录中的包

转载 作者:太空狗 更新时间:2023-10-29 16:53:00 25 4
gpt4 key购买 nike

我要打包的项目结构如下:

├── 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 来做到这一点,我会很高兴查找包

更新:

经过更多尝试后,我意识到使用 python setup.py install 构建包可以达到我的预期(即,它不包括 test)。但是,发出 python setup.py sdist 会导致包含所有内容(也就是说,它会忽略我的 exclude 指令)。我不知道这是一个错误还是一个功能,但仍然有可能使用 MANIFEST.in 排除 sdist 中的文件。

最佳答案

find_packages("src", exclude=["test"]) 有效。
诀窍是删除过时的文件,例如 core.egg-info 目录。在您的情况下,您需要删除 src/core.egg-info.

这是我用过的setup.py:

from setuptools import setup, find_packages

setup(name='core',
version='0.1',
package_dir={'':'src'},
packages=find_packages("src", exclude=["test"]), # <- test is excluded
####packages=find_packages("src"), # <- test is included
author='J.R. Hacker',
author_email='jr@example.com',
url='http://stackoverflow.com/q/26545668/4279',
package_data={'core': ['config/*.tmpl']},
)

要创建分配器,运行:

$ python setup.py sdist bdist bdist_wheel

要启用后一个命令,请运行:pip install wheel

我检查了创建的文件。它们不包含test,但包含core/__init__.pycore/config/log.tmpl文件。

关于python - setup.py sdist 排除子目录中的包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26545668/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com