繁体   English   中英

从另一个文件夹导入一个文件夹中的文件

[英]Import of files in one folder from another folder

我知道有人问过类似的问题,但在这个简单的设置中,我发现的并不是很清楚。 鉴于此目录树,我如何将 function 从file1.py导入到file2 (我们从file2.py调用解释器)? 我希望这个设置在main_folder所在的位置独立工作,也就是说,如果我将main_folder复制到不同的目录,导入仍然可以正常工作。

main_folder
    folder1
        file1.py (with a function func())
    folder2
        file2.py

您可以使用importlib.machinery中的SourceFileLoader从路径导入。

所以你可以使用:

# file2.py

from importlib.machinery import SourceFileLoader

PATH = "../folder1/file1.py"
file1 = SourceFileLoader("module.name", PATH).load_module()

或者,如果您要从 package import ,那么您可以使用:

# file2.py

from folder1.file1 import func

如果您想使用 package 方法,那么您需要从main_folder运行它。

您也可以将绝对路径添加到sys.path

sys.path

指定模块搜索路径的字符串列表。 从环境变量PYTHONPATH初始化,加上依赖于安装的默认值。

在程序启动时初始化时,此列表的第一项path[0]是包含用于调用 Python 解释器的脚本的目录。 如果脚本目录不可用(例如,如果交互调用解释器或从标准输入读取脚本), path[0]是空字符串,它指示 Python 首先搜索当前目录中的模块。 请注意,在PYTHONPATH插入的条目之前插入了脚本目录。

程序可以出于自己的目的自由修改此列表。 只有字符串和字节应该添加到sys.path 导入期间将忽略所有其他数据类型。

import sys
from pathlib import Path
sys.path.append(str(Path(sys.path[0]).resolve().parent / "folder1"))
import file1

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM