Python 如何组织也称为脚本的模块子文件夹?

Python 如何组织也称为脚本的模块子文件夹?,python,python-3.x,Python,Python 3.x,我有一个脚本hello.py,它可以被main.py用作模块,也可以从命令行调用。它本身导入同一目录中的模块helper.py: ├── lib │   ├── hello.py │   ├── helper.py │   ├── __init__.py ├── main.py 这些文件的内容是 $ cat main.py import lib.hello lib.hello.sayhi() ------------------------------------ $ cat lib/h

我有一个脚本
hello.py
,它可以被
main.py
用作模块,也可以从命令行调用。它本身导入同一目录中的模块
helper.py

├── lib
│   ├── hello.py
│   ├── helper.py
│   ├── __init__.py
├── main.py
这些文件的内容是

$ cat main.py
import lib.hello

lib.hello.sayhi()

------------------------------------

$ cat lib/hello.py
import helper

def sayhi():
    print("bonjour")
    print(helper.something())

if __name__ == "__main__":
    print("hello")

------------------------------------

$ cat lib/helper.py
def something():
    print("something")
我遇到的问题是,从命令行调用hello可以正常工作(正确导入
helper.py
,因为它与
hello.py
)处于相同的级别),但在运行main.py时

$ python3 main.py
Traceback (most recent call last):
  File "main.py", line 1, in <module>
    import lib.hello
  File "/tmp/lib/hello.py", line 1, in <module>
    import helper
ImportError: No module named 'helper'
我该如何摆脱这一困境?


我怀疑来自“”的信息可能有用,但我不明白如何将它们用于解决我的问题。

您应该在hello.py中设置

import lib.helper
在调用do something方法时:

lib.helper.something()

这就解决了您的问题,您可以毫无问题地调用main或hello

在Python 2中似乎对我有用。我能帮您吗?
lib.helper.something()