Инструменты установки 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 в каталог верхнего уровня, но ненужные каталоги по-прежнему становятся импортируемыми пакетами. Есть ли способ явно предотвратить это?

0 ответов

Другие вопросы по тегам