gpt4 book ai didi

python - 构建 python .whl 时排除目录?

转载 作者:行者123 更新时间:2023-12-01 07:03:40 24 4
gpt4 key购买 nike

给定一个包含 3 个子目录的 Python 代码库:common、private、public,如何构建排除其中一个目录的 Python 轮文件?

具体来说,我想构建一个包含 commonpublic 但不包括 private 的 Wheel 文件

我有以下设置:

mypackage/
mylib/
common/
__init__.py
... common code ...
private/
__init__.py
... private code ...
public/
__init__.py
... public code ...
setup_public.py
setup_private.py

我的setup_public.py看起来像这样:

imoprt setuptools

setuptools.setup(
name="public",
version="0.1.0",
author="james",
description="public pkg",
packages=setuptools.find_packages(exclude=("mylib/private",)),
classifiers=[
"Programming Language :: Python :: 3",
],
)

当我构建包并安装它时:

python3 setup_public.py sdist bdist_wheel
pip3 install dist/public-0.1.0-py3-none-any.whl

然后检查以验证公共(public)目录是否已排除,我发现它仍然存在:

python3

# works, as expected
>>> import mylib.public

# also works, unexpected! i do not want to expose this code
>>> import mylib.private

出于技术原因,无法将代码分成 3 个不同的包,因此我正在寻求一种解决方案,让我可以配置 setuptools 以忽略文件夹。

最佳答案

您在设置脚本中有一个简单的错误,这一行:

packages=setuptools.find_packages(exclude=("mylib/private",)), 

应该是:

packages=setuptools.find_packages(exclude=("mylib.private",)), 

即不包括包名称,不包括文件系统路径。

关于python - 构建 python .whl 时排除目录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58532323/

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