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()
相关推荐
广州山泉婚姻4 分钟前
VSCode中切换Python虚拟环境失败的原因
python
Ulyanov18 分钟前
从零构建现代化Python音频播放器:ttk深度应用与皮肤系统设计
python·架构·音视频·数据可视化
吃一根烤肠24 分钟前
NumPy 内置函数与数组运算完全指南
python·numpy
Mr_Xuhhh31 分钟前
深入理解Java高级特性:反射、枚举与Lambda表达式实战指南
开发语言·python
派大星~课堂1 小时前
【力扣-94.二叉树的中序遍历】Python笔记
笔记·python·leetcode
SQVIoMPLe1 小时前
python-langchain框架(3-7-提取pdf中的图片 )
python·langchain·pdf
Ulyanov1 小时前
音视频分离与音频处理核心技术深度解析 从MP4到高品质音乐文件的完整技术实现
python·音视频
萝卜白菜。1 小时前
TongWeb8.0 JNDI缓存
开发语言·python·缓存
xiaoshuaishuai81 小时前
PyCharm性能调优
ide·python·pycharm
&&Citrus2 小时前
【CPN 学习笔记(三)】—— Chap3 CPN ML 编程语言 上半部分 3.1 ~ 3.3
笔记·python·学习·cpn·petri网