【发布时间】:2019-11-25 05:32:58
【问题描述】:
假设我们有这个文件树:
test
├── config.py
├── main.py
└── network
└── arduino.py
正如你在下面看到的main.py 导入arduino.py 和arduino.py 从config.py 导入一个变量,该变量位于arduino.py 的父文件夹中。
当我运行 main.py 时,一切正常,但是当我运行 arduino.py 时,我收到此错误:
ModuleNotFoundError: 没有名为“config”的模块
我知道我们不能像我一样简单地从父文件夹导入,但是当我执行 main.py 时,这个导入是如何完成的呢?
请多多指教
arduino.py
from config import some_var
def fun():
print(some_var)
fun()
main.py
from network.arduino import *
fun()
config.py
some_var = 10
我不想从父文件夹导入,我正在寻找解释为什么当正在执行的脚本位于此父文件夹中时此导入工作正常,但它实际上是从实际文件夹脚本导入在我的情况下是arduino.py
【问题讨论】:
-
我明白了,我花了一段时间才明白你到底在尝试什么。执行文件会将其父文件夹添加到PYTHONPATH,这使得从该目录导入成为可能。这是隐式发生的,所以除非你在某个时候遇到它,否则没有办法知道它......就像你今天所做的那样 =)
-
谢谢,很有帮助