1

我有一个包裹:

mypkg
|-- __init__.py
|-- __main__.py
|-- mod1.py

__main__.py

from mypkg import mod1

def main():
    print("Hello from mypkg main!")
    print(mod1.mod1_msg())

if __name__ == '__main__':
    main()

文件__init__.py为空。

我需要从指定路径运行 mypkg 例如:

python -m mypath.mypkg

当我以这种方式运行 mypkg 时,出现错误:

ImportError: cannot import name 'mod1' from 'mypkg' (unknown location)

from mypkg import mod1当我更改为from . import mod1但 PEP8 建议绝对导入而不是相对导入时,这可以解决。

我发现的另一个解决方案是添加:

import sys
from os import path

sys.path.append(path.dirname(path.dirname(path.abspath(__file__))))

__init__.py归档_

然后一切都很好。

所以问题是:更好的解决方案是什么?使用相对导入或操作 sys.path 以使包正常运行,或者可能存在此问题的另一种解决方案?

4

0 回答 0