不使用关键字from的包中的显式相对导入

约瑟夫·巴尔斯

我有以下包结构:

mypkg
├── mymodule
│   ├── __init__.py
│   └── ...
├── mylib.py
└── script.py

script.py我所能做的from .mymodule import Xfrom .mylib import Y与正常工作两个Python 2和Python 3中。

在Python 2中,我可以执行import mymoduleimport mylib并且工作正常,然后稍后可以执行mymodule.Xmylib.Y

在Python 3,我不能这样做import .mymodule,也没有import .mylib(语法错误),如果我删除前导点我得到:ModuleNotFoundError: No module named 'mymodule'ModuleNotFoundError: No module named 'mylib'

阅读此问题后,我知道我需要前导点,但是为什么会出现语法错误?如何使这些导入同时适用于Python 2和3?

更新:为了将来参考,我的软件包结构现在是:

mypkg
├── __init__.py
├── mymodule
│   ├── __init__.py
│   └── ...
├── mylib.py
└── script.py
user2357112支持Monica

你需要

from . import mymodule

from . import mylib

显式相对导入必须使用from语法。设计意图是在importin之后出现的任何内容import ...或者from ... import ...是在导入之后访问已导入事物.mymodule的有效表达式,而不是有效表达式。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

为什么在Java中不使用const关键字?

重载转换运算符时,何时使用关键字“隐式”或“显式”?

java中此关键字的显式作用域如何工作?

使用多个参数的构造函数是否需要显式关键字?

在显式光标中使用带有“更新”关键字的“插入”

使用和不使用use关键字导入类的性能

显式关键字是什么意思?

为什么需要显式编写'auto'关键字?

构造函数的显式关键字的用法

对于此查询,使用Join关键字或不使用Join关键字哪个更好

在razor视图引擎中使用var关键字作为变量,而不是使用显式数据类型进行声明

与形式(位置),* args和** kwargs一起使用时,显式传递命名(关键字)参数

使用循环范围而不使用auto关键字c ++

使用“ var”或不使用关键字分配变量

为什么我们在Angular组件中不使用关键字“ function”?

什么时候不使用Java中的static关键字?

无法访问外部文件中定义的数组,不使用关键字“ extern”

在python中不使用`global`关键字引用函数内部时出错

不使用class关键字扩展数组

不使用新关键字创建承诺

选择而不使用不同的关键字

Python中显式相对导入的正确样板是什么?

在CLR中投放与使用'as'关键字

当函数的行为类似于类但不使用class关键字或“ new”关键字(在Javascript中)时,该怎么称呼?

javascript作为关键字,在导入中“ as”之后的多个名称

为什么在Jenkinsfile中的DSL闭包中使用`env`或`param`时需要关键字`this`

仅使用“export”关键字导入单元测试

对闭包中的ref关键字用法感到困惑

两个包使用相同的关键字