从另一个目录导入函数

Import functions from another directory

我是 运行 一个 python 脚本 (app.py),我必须使用另一个脚本 (src.py) 中的两个函数,该脚本位于另一个目录中。结构如下:

Dir:
   Dir_1:
        __init__.py
        src.py
   Dir_2:
        app.py

我在 app.py 中使用以下行:

from pathlib import Path
PROJECT = Path(__file__).resolve().parent.parent
PROJECT = PROJECT/'Dir_1'

import sys
sys.path.insert(1, PROJECT)
from src import odd_all, even_all

访问 odd_alleven_allsrc.py 内声明的函数。但是,我收到错误消息:ModuleNotFoundError: No module named 'src'.

我该如何解决这个问题?

您可以使用 sys.path.append() 将文件路径附加到系统路径:

import sys
sys.path.append('/.../Dir/Dir_1')

from src import odd_all, even_all

我设法解决了这个问题。问题是 PROJECT 是一个 Posixpath 对象,而 SYS 只接受字符串。因此,解决方案只是将 PROJECT 转换为字符串:

from pathlib import Path
PROJECT = Path(__file__).resolve().parent.parent
PROJECT = str(PROJECT)+'/Dir_1'

import sys
sys.path.insert(1, PROJECT)
from src import odd_all, even_all

现在一切正常。