python的包引入

Python模块导入的基本原理:

当您在Python中导入模块时,Python会按照以下顺序搜索模块路径:

  • 当前脚本所在的目录(或称工作目录)
  • 环境变量 PYTHONPATH 指定的目录
  • 标准库和第三方库的安装目录

创建如下结构

my_project/

├── main.py

├── package_a/

│ ├── init.py

│ ├── module_a1.py

│ └── module_a2.py

└── package_b/

├── init.py

└── module_b1.py

文件内容:

  • package_a/module_a1.py

    def function_a1():

    print("Function A1 from Module A1")

  • package_a/module_a2.py

    from .module_a1 import function_a1

    def function_a2():

    print("Function A2 from Module A2")

    function_a1()

  • package_b/module_b1.py

    from package_a.module_a1 import function_a1

    def function_b1():

    print("Function B1 from Module B1")

    function_a1()

  • main.py

    from package_a.module_a2 import function_a2

    from package_b.module_b1 import function_b1

    function_a2()

    function_b1()

上面的main是可以运行成功的,但是如果你在其中

from ../a/a1 import function_a1

就会报错

这是因为

import 语句的语法限制:

  • import 语句中,您需要使用模块名或包名 ,而不是文件系统路径。

    .和..只能在包内部使用,比如a2中导入a1的方法

也可以通过在 main.py 的顶部手动修改 sys.path,但这通常不被推荐,因为它会导致代码的可移植性和可维护性降低。

复制代码
import sys
import os

# 将上级目录添加到 sys.path
sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))

from a.a1 import function_a1

function_a1()
相关推荐
干啥都是小小白10 分钟前
话题通信之python实现
python·机器人·ros
仟濹31 分钟前
「数据采集与网络爬虫(使用Python工具)」【数据分析全栈攻略:爬虫+处理+可视化+报告】
大数据·爬虫·python·数据挖掘·数据分析
水银嘻嘻1 小时前
03 APP 自动化-定位元素工具&元素定位
python·appium·自动化
蹦蹦跳跳真可爱5891 小时前
Python----目标检测(《用于精确目标检测和语义分割的丰富特征层次结构》和R-CNN)
人工智能·python·深度学习·神经网络·目标检测·cnn
抽风的雨6102 小时前
【python深度学习】Day 42 Grad-CAM与Hook函数
开发语言·python·深度学习
Mikhail_G2 小时前
Python应用for循环临时变量作用域
大数据·运维·开发语言·python·数据分析
人衣aoa2 小时前
Python编程基础(二)| 列表简介
开发语言·python
豆沙沙包?3 小时前
2025年- H61-Lc169--74.搜索二维矩阵(二分查找)--Java版
python·线性代数·矩阵
AntBlack3 小时前
计算机视觉 : 端午无事 ,图像处理入门案例一文速通
后端·python·计算机视觉
Freshman小白3 小时前
基于python脚本进行Maxwell自动化仿真
python·自动化