我正在使用安装工具来安装自定义包。当我安装它时,它工作正常,但如果我使用 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 static
并且这三个都不包含文件或任何文件,因此它们可导入是没有意义的。我的设置文件中是否有什么问题导致了这种情况?import resources
import apps
__init__
.py
编辑:根据 hoefling 的评论,我尝试将空白的init .py 添加到顶级目录,但不需要的目录仍然成为可导入的包。有没有办法明确防止这种情况?