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()
相关推荐
Albert Edison1 天前
【Python】学生管理系统
开发语言·数据库·python
love530love1 天前
【ComfyUI】解决 ModuleNotFoundError: No module named ‘inference_core_nodes‘ 问题
人工智能·windows·python·comfyui·inference-core
亚亚的学习和分享1 天前
python基础语法----条件语句
python
Zzz 小生1 天前
LangChain Streaming-Overview:流式处理使用完全指南
人工智能·python·语言模型·langchain·github
yzx9910131 天前
Python数据结构入门指南:从基础到实践
开发语言·数据结构·python
百锦再1 天前
Jenkins 全面精通指南:从入门到脚本大师
运维·后端·python·servlet·django·flask·jenkins
FYKJ_20101 天前
springboot大学校园论坛管理系统--附源码42669
java·javascript·spring boot·python·spark·django·php
Loo国昌1 天前
【AI应用开发实战】 03_LangGraph运行时与状态图编排:从直接执行到图编排的演进之路
人工智能·后端·python·自然语言处理·prompt
ValhallaCoder1 天前
hot100-堆
数据结构·python·算法·
小小小米粒1 天前
函数式接口 + Lambda = 方法逻辑的 “插拔式解耦”
开发语言·python·算法