python安装工具创建不需要的隐式命名空间包?

时间:2018-06-18 21:13:25

标签: python-3.x setuptools namespace-package

我正在使用安装工具来安装自定义程序包。当我安装它,它工作正常,但如果我去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

在python中,我现在可以import myapp没有问题,但我也可以import staticimport resources以及import apps这三个文件都不包含__init__个文件或任何文件.py个文件,因此它们无法导入。我的设置文件中有什么问题导致这个问题吗?

编辑:根据hoefling的评论,我尝试将空白 init .py添加到顶级目录,但不需要的目录仍然是可导入的包。有没有办法明确地阻止这个?

0 个答案:

没有答案