(python)在一个Python文件中从位于该文件所在文件夹外的另一个文件导入函数或类

☆ 问题描述

假设有如下目录结构
project/

├── utils.py

└── subfolder/
└── myfile.py
在这种情况下,utils.py 文件位于 subfolder 文件夹的外面。要从 myfile.py 中导入 utils.py 中的内容

★ 解决方案

要在一个Python文件中从位于该文件所在文件夹外的另一个文件导入函数或类,你需要确保两个文件都在Python的搜索路径中。假设你有如下的目录结构:

project/
│
├── utils.py
│
└── subfolder/
    └── myfile.py

在这种情况下,utils.py 文件位于 subfolder 文件夹的外面。要从 myfile.py 中导入 utils.py 中的内容,你可以使用几种方法:

方法1: 修改系统路径

myfile.py 中,你可以添加代码来修改系统路径,这样 Python 就可以找到 utils.py 文件。示例如下:

import sys
sys.path.insert(0, '../')

from utils import *

这里 sys.path.insert(0, '../')utils.py 文件所在的上级目录添加到 Python 搜索路径的开始处,确保 Python 可以找到并导入 utils.py

方法2: 使用相对导入

如果你的项目结构适合使用包的结构(即目录中有 __init__.py 文件),你可以使用相对导入。首先,确保每个需要作为包处理的目录中都有一个空的 __init__.py 文件:

project/
│
├── utils.py
│
└── subfolder/
    ├── __init__.py
    └── myfile.py

然后,在 myfile.py 中使用相对导入:

from ..utils import *

注意,使用相对导入时,你的脚本必须作为包的一部分运行,不能直接作为主脚本运行,否则会出错。
即,你需要这样的方式执行代码:

python -m myproject.submodule1.myscript

方法3: 使用环境变量

你可以设置 PYTHONPATH 环境变量,使其包括 utils.py 所在的目录。这样,当你运行 Python 时,它会自动将该目录添加到搜索路径中。

在 Unix-like 系统中,你可以在终端中这样设置:

export PYTHONPATH="/path/to/project:$PYTHONPATH"

在 Windows 系统中,你可以在命令提示符中这样设置:

set PYTHONPATH=C:\path\to\project;%PYTHONPATH%

这样设置之后,你可以在 myfile.py 中正常导入:

from utils import *

选择最适合你项目结构和需求的方法来导入模块。如果你正在开发一个较大的项目,考虑使用环境变量或确保你的项目可以作为包运行,这通常更为稳定和灵活。

  • 5
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值