首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在python中设置相对导入?

如何在python中设置相对导入?
EN

Stack Overflow用户
提问于 2020-07-17 19:36:00
回答 4查看 95关注 0票数 2

我的项目树非常简单,如:

代码语言:javascript
运行
复制
test
  ├── __init__.py (has line: "foo = True")
  ├── bar.py (has line: "bar = False")
  └── test.py (has line: "from . import foo; from .bar import bar")

test.py中的进口产品都不起作用。当我运行python test.py时,它返回:attempted relative import with no known parent package

我错过了什么吗?我正在使用python 3.7.6

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2020-07-17 19:42:06

您的代码很好,但是测试文件需要作为包的一部分导入。因此,我创建了以下文件和目录,具体解释如下:

代码语言:javascript
运行
复制
.
└── test
    ├── bar.py
    ├── __init__.py
    ├── __pycache__
    └── test.py

test的父母那里,我运行了以下命令:

代码语言:javascript
运行
复制
>>> import test
>>> import test.test
>>> import test.bar
>>> 

效果很好。但是,如果要进行相对导入,则需要将要导入的代码作为包的一部分导入,而不是作为独立脚本执行。

票数 0
EN

Stack Overflow用户

发布于 2020-07-17 19:46:35

出现这个问题是因为您试图将foo__init__.py文件导入为from . import foo,但要从__init__.py文件导入,则需要使用父文件夹模块,即from test import foo作为从__init__.py导入的结构。

票数 1
EN

Stack Overflow用户

发布于 2020-07-17 19:43:12

如果要从同一个文件夹导入文件,只需使用它们的文件名:

bar.py

代码语言:javascript
运行
复制
bar = False

foo.py

代码语言:javascript
运行
复制
foo = True

test.py

代码语言:javascript
运行
复制
from foo import foo
from bar import bar

print(foo, bar)

运行python test.py返回:

代码语言:javascript
运行
复制
True False
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62960714

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档