python - Python导入一个模块,它本身导入另一个文件
问题描述
我有一个名为 x.py 的 python 文件,它导入另一个名为 y.py 的文件。y.py 本身导入 z.py,y.py 和 z.py 在同一个目录下,而 x.py 在父目录下。当我在 y.py 中使用相对导入时,例如import .z
y 不起作用而 x 起作用。当我将导入更改为import z
y.py 有效但 x.py 无效
dic1
|__x.py
|__dic2
|__y.py
|__z.py
x imports y
y imports z
是否有任何解决方案可以导入在不同目录中导入另一个文件的 python 文件。
解决方案
Python 中的包需要__init__.py
在它们的根目录下有一个文件。在这里,我对什么是包以及什么是根目录感到有些困惑。
我会有这样的事情:
<root_directory>
|__ setup.py
|__ <other top level files>
|__ dic1/
|__ __init__.py
|__ x.py
|__ dic2/
|__ y.py
|__ z.py
您已将此标记为python
,所以我不知道您使用的是 Python2 还是 Python3。鉴于前者是生命的尽头,你真的应该使用 Python3。
你可以导入相对于根包的东西,在这个例子中,dic1
.
如果使用 python2,则需要from __future__ import absolute_import
在每个文件的顶部。
x.py
from dic1.dic2 import y
y.py
from dic1.dic2 import z
推荐阅读
- javascript - 猫头鹰旋转木马检查项目计数做某事
- javascript - 尝试更新对象中的数组并获取 TypeError: Cannot read properties of undefined (reading 'name')
- python - 在 Scala 代码和 Spark 中使用 Python 中的 pmdarima 库 - 时间序列
- html - 如何在 Nuxt 中导入和使用自定义 Chart.js 插件?(Chartjs-vuejs v2.9.4)
- python - 如何编写一个 Python 计算机程序,它将任何有效的算术表达式作为字符串并输出一个列表(或字符串数组)?
- python - 是否可以使用预签名的 url 通过 lambda 函数将文件上传到 s3?
- android - 有没有办法知道 Xamarin 中 BLE(蓝牙低功耗)扫描设备使用的协议类型?
- obiee - 无法将 obiee 12c 与 Essbase 连接
- geopandas - 将 DataFrame XYZ 转换为 Geopandas LineString
- c++11 - 前向迭代器的高级方法的运行时复杂度是多少?