Python:项目相对路径

项目层级结构:

my_project/
├── main.py
├── module1/
│   ├── __init__.py
│   └── my_module.py
├── module2/
│   ├── __init__.py
│   └── another_module.py

1. 包结构和__init__.py文件

Python将包含__init__.py文件的目录视为包,这允许文件夹内部的模块互相导入。无论包或模块位于项目结构的哪个级别,只要目录结构清晰,并且有__init__.py,Python就能够正确识别这些模块并允许跨级别的导入。

2. 绝对路径(Absolute Path)

  • 定义:绝对路径是使用项目根目录为基础的路径,逐级指定模块的路径,直到具体的模块或包。这种导入方式不依赖于当前文件所在的位置,始终从项目的根目录进行导入。

  • 使用场景:适用于跨模块的导入,即使文件结构复杂,绝对路径导入的稳定性更强。

  • 示例
    假设有如下项目结构:

    my_project/
    ├── main.py
    ├── module1/
    │   └── my_module.py
    └── module2/
        └── another_module.py
    

    从根目录(.)【子目录的所在的目录】开始,就是根目录下的子目录开始导入

    module2/another_module.py中使用绝对路径导入module1.my_module

    from module1 import my_module
    

    这里,从根目录开始直接导入module1中的my_module

3. 相对路径(Relative Path)

  • 定义:相对路径是==相对于当前模块所在的目录==进行导入的。可以使用点**(.和双点..)**来表示当前目录和上一级目录。

    • **.** 表示当前目录
    • **..** 表示上一级目录
  • 使用场景:适用于同一包中的模块之间进行导入,尤其是多层包结构中,文件之间的关系明确时,使用相对路径可以使代码更加简洁。

  • 示例
    在上述项目结构中,如果要在module2/another_module.py中相对路径导入module1.my_module,可以使用:

    from ..module1 import my_module
    

    这里的..表示返回上一级目录(即my_project),然后导入module1中的模块。

    4. 跨级导入示例

    假设有如下项目结构:

    my_project/
    ├── main.py
    ├── module1/
    │   ├── __init__.py
    │   └── my_module.py
    ├── module2/
    │   ├── __init__.py
    │   └── another_module.py
    

    如果你希望从main.py中导入module1.my_module,可以这样做:

    from module1 import my_module
    

    但是,如果你在module2/another_module.py中希望导入module1/my_module.py,你可以使用相对导入:

    from ..module1 import my_module
    

    或者使用绝对导入:

    from module1 import my_module
    

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值