因此,我的文件/文件夹结构如下:
project/
├─ utils/
│ ├─ module.py
├─ server/
│ ├─ main.py
在project/server/main.py
内部,我试图使用以下语法导入project/utils/module.py
:from..utils.module import my_函数
。
我使用的是VSCode,当我键入模块路径时,它甚至会自动完成。但是当我运行文件project/server/main.py
时,标题中出现了错误。
我在这里读了几十个关于堆栈溢出的答案,但是没有一个使用这样的例子。
您可以不使用from..util.module import my_函数而尝试直接导入my_函数。
如果它不起作用,你需要创建一个新的文件,它可以是空的,名为__init__. py
,在utils文件夹和服务器文件夹下。__init__. py
创建一个可以为任何模块调用的实际模块。
希望它能起作用。
这里有一个参考资料可以很好地解释这个问题。基本上,问题在于运行独立脚本时未设置\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
。
文件结构
.
└── project
├── server
│ └── main.py
└── utils
└── module.py
project/server/main.py
if __name__ == '__main__':
print(__package__)
输出
$ python3 project/server/main.py
None
正如我们所看到的,\uuuuu package\uuuu
的值是None
。这是一个问题,因为它是此处所述相对进口的基础:
\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
... 如PEP 366中所定义,此属性用于计算主模块的显式相对导入,而不是使用
\uuuuuuu name\uuuuuuu
。。。
PEP 366进一步解释了这一点:
提议的主要变化是引入了一个新的模块级属性,
\uuuuuu-package\uuuu
。当它存在时,相对导入将基于此属性,而不是模块\uuuuu name\uuuu
属性。
要解决此问题,可以通过-m标志将其作为模块运行,而不是独立脚本。
输出
$ python3 -m project.server.main # This can be <python3 -m project.server> if the file was named project/server/__main__.py
project.server
project/server/main.py
from ..utils.module import my_function
if __name__ == '__main__':
print(__package__)
print("Main")
my_function()
输出
$ python3 -m project.server.main
project.server
Main
My function
现在,设置了
\uuuuuuuuuuuuuuuuuuuuuuuuuu
,这意味着它现在可以解析如上所述的显式相对导入。
我正在学习fastapi。我有这样一个非常简单的项目结构 内部
这条线出错了。 尝试导入没有已知父包的相对导入 此错误是什么以及如何解决此错误?
我正在学习使用python编程,并且我在从包中的模块导入时遇到问题。我正在使用Python 3.8.2 64位的Visual Studio代码。 我的项目目录 在电子商务/产品中。py我拥有的文件: 这样我就可以从电子商务/数据库导入数据库类。py文件。但我有个错误
我正在学习用python编程,我在从包中的模块导入时遇到了问题。我使用的是Visual studio代码和Python 3.8.2 64位。 我的项目目录 在<code>电子商务/产品中。py文件我有: 这样我就可以从< code > ecommerce/Database . py 文件中导入< code>Database类。但是我出错了
我一直在努力与Python上的相对导入。 我的项目结构是这样的: 我想先将一组函数从位于
运行python main。py其中为main。py具有相对导入将失败。 梅因。派克 other.py PEP 338——以脚本形式执行模块很明显,显式相对导入无法从主模块中工作。 2.5b1的发布显示了这个PEP和PEP 328之间令人惊讶的(尽管回想起来很明显)相互作用——显式的相对导入不适用于主模块。这是因为相对导入依赖于来确定当前模块在包层次结构中的位置。在主模块中,的值总是,因此显式的相