如何在Python中导入同一模块目录中的其他函数?
我制作了我的python模块,该模块如何在Python中导入同一模块目录中的其他函数?,python,python-3.x,Python,Python 3.x,我制作了我的python模块,该模块A.py使用B.py如下所示。在这种情况下,如何在a.py中导入B.py?我想使用其他目录中的mylib模块。但由于路径问题,我的代码无法工作 ├── main.py └── mylib ├── A.py ├── B.py ├── __init__.py └── main_in_mylib.py A.py import B def test(): B.hello() def hello(): print("h
A.py
使用B.py
如下所示。在这种情况下,如何在a.py
中导入B.py
?我想使用其他目录中的mylib
模块。但由于路径问题,我的代码无法工作
├── main.py
└── mylib
├── A.py
├── B.py
├── __init__.py
└── main_in_mylib.py
A.py
import B
def test():
B.hello()
def hello():
print("hello from B")
import A
A.test()
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'
B.py
import B
def test():
B.hello()
def hello():
print("hello from B")
import A
A.test()
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'
mylib.py中的main\u
import B
def test():
B.hello()
def hello():
print("hello from B")
import A
A.test()
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'
main.py
import B
def test():
B.hello()
def hello():
print("hello from B")
import A
A.test()
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()
# main.py
import mylib.B as B
import mylib.A as A
A.test()
您需要将A更改为
import mylib.B as B
def test():
B.hello()
而不是
import B
def test():
B.hello()
因为导入总是相对于您调用的脚本(在本例中是main.py)进行的,所以需要将A更改为
import mylib.B as B
def test():
B.hello()
而不是
import B
def test():
B.hello()
因为导入总是相对于您调用的脚本(在本例中为main.py)而言,问题在于您导入了一个文件并试图使用点表示法调用方法 使用mylib.A导入测试中的
现在,您可以在main.py中直接使用test()
在python3中,您甚至不必在目录中写入
\uuuu init\uuuu.py
来判断它是一个包(尽管这是一个很好的实践)问题是您导入了一个文件并试图使用点表示法调用方法
使用mylib.A导入测试中的
现在,您可以在main.py中直接使用test()
在python3中,您甚至不必在目录中写入
\uu init\uuuuuuuuuuuuuuupy
来判断它是一个包(尽管这是一个很好的实践)对于记录,这里也可以在a.py
中进行相对导入:
from . import B
对于记录,这里也可以在
a.py
中进行相对导入:
from . import B
python中的系统并不总是直观的,但我认为这里的链接将帮助您了解事物是如何工作的。python中的系统并不总是直观的,但我认为这里的链接将帮助您了解事物是如何工作的。这还不清楚。你能查一下我的更新吗?这可能不是正确答案。您需要在Ank you中执行此导入。现在我的代码正在运行。顺便问一下,在这种情况下导入其他函数是常见的吗?为什么不从mylib import B导入
?别名似乎是多余的here@AzatIbrakov我只是想保持原始问题中使用的风格,这还不清楚。你能查一下我的更新吗?这可能不是正确答案。您需要在Ank you中执行此导入。现在我的代码正在运行。顺便问一下,在这种情况下导入其他函数是常见的吗?为什么不从mylib import B导入?别名似乎是多余的here@AzatIbrakov我只是想保持原来提问中使用的风格。。您可以从导入测试中写入更正。。你可以从导入测试中写入它看起来很有用,因为我不需要设置特定的目录名。它看起来很有用,因为我不需要设置特定的目录名。