[英]Python - "ImportError: cannot import name" for modules in the same directory
我在同一个目录中有两个 python 文件。 我也有__init__.py
文件。 Python版本为: 3.9.7
无法弄清楚为什么我不能导入模块。
a.py
def aaa():
print ("test")
b.py
from a import aaa
aaa()
错误:
from a import aaa
ImportError: cannot import name 'aaa' from 'a' (/usr/lib64/python3.9/a.py)
它也不起作用:
from .a import aaa
ImportError: attempted relative import with no known parent package
将其运行为: python b.py
我尝试了其他选项但没有成功。
更新:没有 init.py from a import aaa aaa()
的相同简单代码适用于 python 2.7。
OS:
"Red Hat Enterprise Linux 8.5"
谢谢!
对于同一文件夹中的相对导入,请使用单个.
from .a import aaa
就像 Samathingamajig 指出的那样,您需要相对进口。
因此,首先,将b.py
中的行更改为:
from .a import aaa
您还需要处理您现在拥有一个包而不是单个模块的事实。 Python 需要知道如何找到你的模块。
解决这个问题的一种方法是使用-m
运行它。 如果您的 Python 文件位于/some/dir/myproject/
中,请按如下方式运行它:
cd /some/dir
python3 -m myproject.b
请注意名称空间点替换了最后一个命令中的目录分隔符。
或者,安装你的包(我建议学习打包,但现在你可以简单地将myproject
目录移动到sys.path
中的目录之一),然后你可以让任何 Python 文件import myproject.b
或运行python3 -m myproject.b
从任何目录。
如果您想拥有一个既可用作库又可用作独立应用程序的包,您可以添加包含代码的__main__.py
文件以将其作为应用程序运行。 这样python3 -m myproject
将运行您的主项目
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.