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()
相关推荐
蓝天星空13 分钟前
Python调用open ai接口
人工智能·python
jasmine s22 分钟前
Pandas
开发语言·python
郭wes代码22 分钟前
Cmd命令大全(万字详细版)
python·算法·小程序
leaf_leaves_leaf40 分钟前
win11用一条命令给anaconda环境安装GPU版本pytorch,并检查是否为GPU版本
人工智能·pytorch·python
夜雨飘零11 小时前
基于Pytorch实现的说话人日志(说话人分离)
人工智能·pytorch·python·声纹识别·说话人分离·说话人日志
404NooFound1 小时前
Python轻量级NoSQL数据库TinyDB
开发语言·python·nosql
天天要nx1 小时前
D102【python 接口自动化学习】- pytest进阶之fixture用法
python·pytest
minstbe1 小时前
AI开发:使用支持向量机(SVM)进行文本情感分析训练 - Python
人工智能·python·支持向量机
落魄实习生1 小时前
AI应用-本地模型实现AI生成PPT(简易版)
python·ai·vue·ppt
苏言の狗1 小时前
Pytorch中关于Tensor的操作
人工智能·pytorch·python·深度学习·机器学习