从另一个文件夹导入 Python

Python import from another folder

提问人:JanSkn 提问时间:9/22/2023 最后编辑:MSHJanSkn 更新时间:9/26/2023 访问量:46

问:

我以这个结构为例:

application
| main.py
├── folder
   ├── __init__.py
   └── file.py

当我想从中导入一些东西时,我可以简单地做main.pyfile.py

从 folder.file 导入 xy

但是我怎样才能从 main.py 导入 file.py 中的东西?

它不起作用,我尝试了系统,初始化.py文件...

谢谢

python 目录 结构 sys

评论

0赞 JanSkn 9/22/2023
对不起,我问题中的结构搞砸了。文件夹包含 file.py,是一个子文件夹。当然,我的意思是 __ 初始化 __.py
0赞 Jeff Glass 9/22/2023
这个问题很好地概述了如何使用相对导入从父文件夹中的模块导入: stackoverflow.com/questions/53863239/...

答:

0赞 Qeyzho 9/22/2023 #1

在这种情况下,您应该将 main.py 路径添加到 file.py 中。

import sys
print(sys.path)

结果将是 file.py 读取的路径列表,因此请通过 append 方法将主路径添加到此列表中。因为这个路径是父目录,所以只在当前目录前放双点:

sys.path.append('../folder')

然后,您可以从 main.py 导入。

评论

0赞 JanSkn 9/25/2023
对不起,我在下面的新答案中回答了,我以前从未使用过 Stackoverflow ^^提出自己的问题。你能看看我在那里做了什么吗?:D
0赞 JanSkn 9/25/2023 #2
# allows import from different folder
import sys
import os
current = os.path.dirname(os.path.realpath(__file__))
directory = os.path.join(current, "..", "neural_network")
sys.path.append(directory)

import numpy as np
from keras.datasets import mnist
import keras.utils
from dense_layer import Dense_layer
from activation_functions import Tanh
from loss_functions import mse, mse_derivative
from network import train, save 

感谢您的回复。所以我用这个解决方案解决了我的问题,它现在可以工作了,但我的IDE(VSCode)说:导入“dense_layer”无法解决

评论

0赞 Qeyzho 9/25/2023
您的意思是从终端或 CMD 运行代码时可以,并且仅在 VS 代码中才会发生此错误吗?
0赞 JanSkn 9/26/2023
实际上它没有错误。它有效。它只是被突出显示