好的,我将代码剥离到了极致,以说明问题并使其可复制
背景:
谈话是廉价的。向您显示代码:
代码结构:
$ tree pymod/
pymod/
├── modone
│ ├── __init__.py
│ └── one.py
└── modtwo
├── __init__.py
└── two.py
init.py显然无处不在
1.py:
from modtwo import two
class One():
@staticmethod
def print_one():
print("this is one")
two.print_two()
if __name__ == "__main__":
One().print_one()
2.py:
class Two():
@staticmethod
def print_two():
print("this is from two")
抛出错误
$ python modone/one.py
Traceback (most recent call last):
File "modone/one.py", line 1, in <module>
from modtwo import two
ImportError: No module named modtwo
到目前为止,我尝试的是:
回答后编辑:
到目前为止,我学到的是:
模块和脚本是两个不同的概念。
它们就像光波/粒子二象性
因此,它们应该被这样调用/处理(作为模块或脚本)
一个模块可以作为脚本运行,但它不会知道它周围的目录结构
一旦有了类似于包的目录结构,请使用
-m
选项运行python,以脚本的形式运行模块:你的one.py中也有一个bug。在导入的模块上调用
print_two
,而不是在模块内部的类上调用问题在于如何调用print_two方法。 您调用了两个,这是一个模块,这就是为什么您得到“模块不可调用”
你应该先访问这个类
然后像这样运行脚本
结果是:
相关问题 更多 >
编程相关推荐