【发布时间】:2021-12-28 05:21:21
【问题描述】:
我有以下文件夹结构:
我想从 D.py 访问 A.py(3 级以上)。我在这个项目的所有目录中添加了一个 init.py 来将它们初始化为包。当我在 D.py 中尝试以下操作时:
from test1 import A
A.hi()
我收到以下错误:
ModuleNotFoundError: No module named 'test1'
我使用的是 Windows 10、Visual Studio Code 和 python 3.9.6,我什至将所有 test1、test2、test3 文件夹添加到路径变量中。我认为值得一提的是,Visual Studio 似乎确实将这些文件夹识别为包,因为它在导入时键入模块名称时将它们显示在下拉列表中。
编辑: 我已经设法从 test3 D.py 访问了在 test1 中创建的 Z.py:
import sys
import os
sys.path.append(os.path.abspath("C:\\Users\\myusername\\Desktop\\testdbconnection"))
from test1 import Z
Z.hi()
此文件夹已在 Windows 路径中,我自己添加的。为什么以前 Python 不识别?
此外,除了 test1 中的内容之外,我无法访问其他任何内容。
-
如果我想访问 A.py 和 B.py 我需要附加到路径 C:\用户\我的用户名\桌面,
-
如果我想访问 test2 C.py 我需要附加到路径 C:\Users\myusername\Desktop\testdbconnection\test1
-
等等……
【问题讨论】:
-
test1包需要安装在搜索路径中才能导入。 -
这能回答你的问题吗? How to locally develop a python package?
-
看看this
-
你是如何运行这段代码的?
test1仅在显式添加到搜索路径时作为包提供或D.py作为test1.test2.test3.D运行(即作为包的一部分)。 -
嘿,不,stackoverflow.com/questions/52248505/… 没有回答我的问题。我只是想为我的一个更大的项目访问根目录中的脚本。这是一个我想重用的邮件脚本。然而,这更接近于解决我的问题:stackoverflow.com/questions/24868733/…