如何在绝对导入中设置没有点符号的 Pypi 包 - python3
Posted
技术标签:
【中文标题】如何在绝对导入中设置没有点符号的 Pypi 包 - python3【英文标题】:How to set up a Pypi package without the dot notation in absolute import - python3 【发布时间】:2019-06-20 22:21:29 【问题描述】:大多数“专业”的python模块都可以这样导入:
from pythonfile import class
这就是我通常导入本地文件系统/当前目录中自己的类的方式。
但是在查看了几篇文章和 python.org 文档之后,我仍然无法像那样导入我的 python 模块(在 Pypi.org 上)。
我可以让我的模块导入的唯一方法是这样的:
from example.example import Example
(示例是example.py中的一个类)
如何让我的模块像这样导入:
from example import Example
我在 Pypi 上的模块的文件夹结构是这样的,可以通过 pip 正常安装:
example/
|
├── example/
│ ├── example.py
│ ├── __init__.py
│ └── __pycache__
│ └── __init__.cpython-36.pyc
|
|
├── __init__.py
├── LICENSE
|
├── README.md
└── setup.py
为了清楚起见,我省略了 build/、dist/ 和 egg-info 目录。
我应该将导入语句添加到__init__.py
文件之一吗?
我希望开发者能够通过 pip 安装包,然后使用一个简单的
from example import Example
而不是from example.example import Example
谢谢。
【问题讨论】:
【参考方案1】:当您查看其他一些大包时,它们通常在其顶部 __init__.py 中包含类似
from .modulex import *
from .moduley import *
点表示,python 在 PYTHONPATH 的其余部分之前正在查找当前包。
【讨论】:
但是应该继续哪个 init.py 呢?顶层目录中的那个?还是内部 example/ 目录中的那个? ***目录中的那个。在您的情况下,您从 .example import Example 编写。但您必须安装它才能正常工作。 感谢您的简洁回答。答案可能在我认为的其他一些帖子中,但它们有太多额外的信息:D 我最终在 init.py 文件中使用了 from .example import Example 不客气!但只是我太懒了。我认为在这里可以提到的包中的导入存在很多缺陷。以上是关于如何在绝对导入中设置没有点符号的 Pypi 包 - python3的主要内容,如果未能解决你的问题,请参考以下文章