从子目录导入模块-python

时间:2020-03-26 18:21:01

标签: python python-import

我想以一种简单的方式从子目录导入模块:

我想调用app.py中的所有功能

.
├── app.py
└── testsubdir
    └── testsubsubdir
        ├── utils.py
testsubdir2
└── testsubsubdir2
    ├── utils2.py

为此,我现在使用:

sys.path.append('/home/www/testsubdir/testsubsubdir')
sys.path.append('/home/www/testsubdir2/testsubsubdir2')
from utils import <some_function>
from utils2 import <some_function>
  1. 是否有一种方法可以将/ home / www作为python调用脚本的主要路径,所以我不需要每次都编写它。像这样吗 sys.path.append('$ MAINPATH。'/ testsubdir2 / testsubsubdir2')
  2. 是否有一种方法可以将所有子目录从项目/ home / www的根目录放置到sys.path,以便用于包含库?

1 个答案:

答案 0 :(得分:0)

对于相对导入,您只需执行from testsubdir.testsubsubdir import utils

对于“同级”情况,则比较棘手。您可以使用sys.path.append(path)(或sys.path.insert(0, path),但这不是一个很好的解决方案。有关更好的选择,我将引用this怪物文章。

因此,对于您的问题1,您可以(借助丑陋的技巧)进行os.path.append(os.path.dirname(os.path[0]))