Инструменты установки python создает нежелательный неявный пакет пространства имен?
Я использую инструменты установки для установки пользовательского пакета. Когда я его устанавливаю, он работает нормально, но если я перехожу на python, я могу импортировать вещи, которые я не собирался делать доступными, и я хотел бы предотвратить это.
Мой setup.py выглядит так:
from setuptools import setup, find_packages
import os
setup(
name = "MyApp",
version = "0.1.0",
author = "Me",
author_email = "me@gmail.com",
packages = ["theapp"],
package_data = {'theapp': ['../static/*.js', '../static/*.html', '../apps/*', '../resources/*', '../static/*.css', '../static/smore/*']},
url = "https://github.com/Me/MyApp/",
description = "does some stuff",
python_requires = ">3.5",
install_requires = [
"qrcode>=5.3",
"aiohttp>=2.3",
"pyusb>=1.0",
],
entry_points = {
"console_scripts": [
'myapp = myapp:main',
]
},
)
и мой каталог настроен так:
MyApp/
├── __init__.py
├── apps
│ ├── main.py
│ └── stuff.py
├── myapp
│ ├── __init__.py
│ ├── lib
│ │ ├── base.py
│ │ ├── __init__.py
│ │ ├── __pycache__
│ │ └── ui.py
│ ├── __main__.py
│ └── __pycache__
├── resources
│ ├── tex.cls
│ ├── moretex.sty
│ ├── moretexx.sty
│ ├── outfile.pdf
│ └── outfile.tex
├── setup.py
└── static
├── fontawesome-all.js
├── index.html
├── jquery-3.3.1.js
├── smore
│ ├── myapp.css
│ └── myapp.min.js
└── style.css
В питоне я могу сейчас import myapp
без проблем, но я также могу import static
а также import resources
а также import apps
Ни один из этих трех не содержит __init__
файлы или любые .py
файлы, так что нет смысла их импортировать. Есть ли что-то, что я делаю неправильно в моем установочном файле, чтобы вызвать это?
РЕДАКТИРОВАТЬ: Основываясь на комментарии hoefling, я попытался добавить пустой каталог.py в каталог верхнего уровня, но ненужные каталоги по-прежнему становятся импортируемыми пакетами. Есть ли способ явно предотвратить это?