Учитывая базу кода Python с 3 подкаталогами: общие, частные, публичные, как мне создать файл колеса Python, исключающий один из каталогов?
В частности, я хочусоздайте файл колеса, который включает common
и public
, но исключает private
У меня есть следующие настройки:
mypackage/
mylib/
commmon/
__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
И затем проверяю, чтобы исключить общий каталог, я обнаружил, что он все еще там:
python3
# works, as expected
>>> import mylib.public
# also works, unexpected! i do not want to expose this code
>>> import mylib.private
Разделение кода на 3 отдельных пакета здесь не представляется возможным по техническим причинам, поэтому я ищу решение, которое позволит мне настроить setuptools на игнорирование папки.