我制作了我的python模块,A.py使用B.py,如下所示。在这种情况下,如何在B.py中导入A.py?我想从其他目录中使用mylib模块。但是我的代码不工作,因为路径问题。
├── main.py
└── mylib
├── A.py
├── B.py
├── __init__.py
└── main_in_mylib.pyA.py
import B
def test():
B.hello()B.py
def hello():
print("hello from B")main_in_mylib.py
import A
A.test()main.py
import mylib.A as A
A.test()
Traceback (most recent call last):
File "main.py", line 3, in <module>
import mylib.A as A
File "/home/jef/python-module/mylib/A.py", line 3, in <module>
import B
ModuleNotFoundError: No module named 'B'已更新
ModuleNotFoundError:没有名为'B'的模块
# main.py
from mylib.A import test
test()ModuleNotFoundError:没有名为'B'的模块
# main.py
import mylib.B as B
import mylib.A as A
A.test()发布于 2017-05-10 07:07:54
您需要将A更改为
import mylib.B as B
def test():
B.hello()而不是
import B
def test():
B.hello()因为导入总是相对于您调用的脚本(在本例中是main.py)
发布于 2017-05-10 07:49:12
为了记录在案,这里还可以在A.py中进行相对导入
from . import B发布于 2017-05-10 07:12:15
问题是您导入了一个文件,并试图使用点标记调用方法。
使用from mylib.A import test
现在,您可以在您的test()中直接使用main.py。
在python3中,您甚至不需要在目录中编写__init__.py来判断它是一个包(不过,这是一个很好的实践)
https://stackoverflow.com/questions/43885580
复制相似问题