我希望将我的代码拆分为Python 3中的多个文件。
我有以下文件:
/hello
__init__.py
first.py
second.py
上述文件的内容为:
first.py
from hello.second import say_hello
say_hello()
second.py
def say_hello():
print("Hello World!")
但是当我跑步时:
python3 first.py
在hello
目录中,我收到以下错误:
Traceback (most recent call last):
File "first.py", line 1, in <module>
from hello.second import say_hello
ImportError: No module named 'hello'
答案 0 :(得分:0)
换出
from hello.second import say_hello
代表
from second import say_hello
您的默认Python路径将包含您当前的目录,因此直接从second
导入将起作用。您甚至不需要__init__.py
文件。但是,如果您希望从包外部导入,则执行需要__init__.py
文件:
$ python3
>>> from hello.second import say_hello
>>> # Works ok!
答案 1 :(得分:0)
你不应该在hello目录中运行python3。
您应该在hello目录之外运行它并运行
python3
>>> import hello.first
顺便说一句,Python 3中不再需要__init__.py
。请参阅PEP 420。
答案 2 :(得分:0)
不打算从当前目录导入包。
可以使用if/else
测试或try/except
处理程序使其工作,但它的工作量超出了它的价值。
只需cd ..
,这样您就不会进入软件包的目录,它可以正常运行。