[Python 数据科学] Python 导入其他 py 文件, import other module

Python 数据科学

Python 编程中,每个以 .py 为后缀的文件被称作模块(module)。很多时候,我们需要导入其他模块中的函数,

在 Python 中导入其他文件夹中的模块时,有几个规则和方法可供使用。主要涉及 Python 的模块搜索路径(sys.path),以及如何使用相对导入绝对导入

1. Python 如何查找模块


  1. 当前目录(脚本所在的文件夹)。
  2. sys.path 中的目录
    • PYTHONPATH 环境变量中的路径。
    • Python 安装目录中的标准库路径。
    • site-packages 目录(安装的第三方库)。

你可以运行以下代码查看 Python sys.path中的路径目录:

import sys

print(sys.path)
['/Users/zhenchen/Documents/book-Python-Data-Science/data-science', '/Users/yourname/projects', '/Users/zhenchen/Documents/book-Python-Data-Science/data-science', '/Users/zhenchen/anaconda3/lib/python310.zip', '/Users/zhenchen/anaconda3/lib/python3.10', '/Users/zhenchen/anaconda3/lib/python3.10/lib-dynload', '', '/Users/zhenchen/.local/lib/python3.10/site-packages', '/Users/zhenchen/anaconda3/lib/python3.10/site-packages']

2. 同级模块导入或同级文件夹下的模块导入


若导入模块是当前模块的同级文件,即二者在一个父目录下,例如:

目录结构

project_root/
│── main.py
│── my_module.py

我们在 main.py 文件中想导入 my_module.py 模块,可以:

import my_module

若具体想导入 my_module.py 模块中的某个函数或类 foo(),可以

from my_module import foo

若导入模块在与当前模块同级的文件夹下,例如:

目录结构

project_root/
│── main.py
│── folder1/
│    │── my_module.py

我们在 main.py 文件中想导入 folder1 文件夹下的 my_module.py 模块,可以:

from folder1.my_module import foo

3. 与父文件夹同级的模块导入


若导入模块在与当前模块父文件夹同级,例如:

目录结构1

project_root/
│── my_module.py
│── folder1/
│    │── main.py

或者:

目录结构2

project_root/
│── folder2
│    │── my_module.py
│── folder1/
│    │── main.py

在 main.py 文件中想导入与父文件夹同级的 my_module.py 模块,可以通过将父文件夹路径添加到 sys.path 中去的方式:

import sys
import os

# 获取 `parent_directory` 路径
parent_dir = os.path.abspath(os.path.join(os.path.dirname(__file__), ".."))
sys.path.insert(0, parent_dir)  # 插入 `parent_directory` 到 sys.path

现在可以正确导入 my_module.py

  • 若为目录结构1: import my_module
  • 若为目录结构2:   from folder2 import my_module
Pycharm 会自动把整个项目文件夹的根目录加入到 sys.path 中,因此在 Pycharm 中,都可按照跟目录下的模块导入

例如,在 Pycharm 中,对于目录结构2,可以直接按下面代码导入模块,而不用通过 sys.path 添加父文件夹路径。

from folder2 import my_module

4. 使用 sys.path.append()


如果你的模块所在路径比较复杂,你可以使用以下方法 sys.path.append()添加导入模块的具体路径。

例如,如果你想导入 other_folder/module.py,其中,“other_folder” 为文件夹在电脑硬盘中的详细地址。可以在代码中手动添加路径:

import sys
import os

sys.path.append(os.path.abspath("other_folder"))  # 临时将路径添加到 sys.path
import module  # 现在可以正常导入
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

心态与习惯

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值