用Python方式管理从另一个目录导入对象的方法

时间:2019-04-27 19:11:57

标签: python import python-module python-3.7

有许多类似的SO问题,但我相信我的关注有所不同。请完整阅读问题。

当我在名为tree的项目目录中运行Project命令时,会显示以下信息

.
├── app1
│   ├── __init__.py
│   └── hello.py
└── app2
    ├── __init__.py
    └── utils.py

hello.py

的内容
from math import factorial

from app2.utils import hello

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

utils.py

的内容
def hello():
    print("Hello")


if __name__ == "__main__":
    hello()

python app2/utils.py目录运行Project可得到以下信息:

hello

但是,从同一python app1/hello.py目录运行Project会导致错误。

Traceback (most recent call last):
  File "app1/hello.py", line 3, in <module>
    from app2.utils import hello
ModuleNotFoundError: No module named 'app2'

在阅读了许多SO答案之后,我找到了解决此问题的方法。答案建议在hello.py

的顶部添加以下行
import sys

sys.path.append(".")

建议的方法确实解决了我的问题,但对我来说似乎并不是pythonic(在每个文件中添加相同的行集)。

有没有更好的方法可以达到相同的目的?

谢谢。

0 个答案:

没有答案