Python 从其他目录导入

Python 从其他目录导入,python,import,directory,pythonpath,package-managers,Python,Import,Directory,Pythonpath,Package Managers,我正在使用以下文件夹体系结构构建Python应用程序(大致如下所示): 这对我来说是理想的文件/文件夹层次结构,但是,我对如何从外部文件夹引用模块感到困惑。例如,myapp\u service1\u start.py需要引用myapp\u common1.py和myapp\u common2.py中的函数 我知道我需要以某种方式添加对系统path或pythonpath的引用,但我不确定在代码中这样做的最佳方式。或者更确切地说,我甚至可以在代码中这样做 我该怎么做? 我看过很多关于创建一个完整的P

我正在使用以下文件夹体系结构构建Python应用程序(大致如下所示):

这对我来说是理想的文件/文件夹层次结构,但是,我对如何从外部文件夹引用模块感到困惑。例如,
myapp\u service1\u start.py
需要引用
myapp\u common1.py
myapp\u common2.py中的函数

我知道我需要以某种方式添加对系统
path
pythonpath
的引用,但我不确定在代码中这样做的最佳方式。或者更确切地说,我甚至可以在代码中这样做

我该怎么做?


我看过很多关于创建一个完整的Python包并通过
pip
安装的帖子,但这对我来说似乎有些过分了

一种方法是让每个
myapp\u服务*\u start.py
文件将
myapp/
目录添加到
sys.path

例如,将一个名为
import_me.py
的文件放入
myapp_service1/
中,其中的代码将“向上一个”目录(相对于导入文件)附加到
sys.path

import os
import sys
import inspect
this_dir = os.path.dirname(inspect.getfile(inspect.currentframe()))
src_dir = os.path.join(this_dir, '..')
sys.path.insert(0, src_dir)
然后,在您的
myapp\u service1\u start.py
中,您可以执行以下操作:

import import_me
from common import myapp_common1
from common import myapp_common2
当然,通过将一个(可能为空的)
\uuu init\uuuuuuuuuuuuupy
文件放入Python包中,确保将
common
目录设置为Python包

import import_me
from common import myapp_common1
from common import myapp_common2