如何在绝对导入中设置没有点符号的 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的主要内容,如果未能解决你的问题,请参考以下文章

如何在word中设置图片边距

如何在 IntelliJ IDEA 中设置多语言项目

如何在 ConstraintLayout 中设置视图的绝对位置

如何在 WinDbg 中设置符号?

如何在 Spring java 中设置存储库?

如何在jQuery中设置绝对位置