当前位置:   article > 正文

python import与相对路径_python import 相对路径

python import 相对路径

前言:又是弄视频分割的这个项目,被里面的路径搞疯了,一直报错。其实以前也遇到过路径相关的问题,但是随便折腾下,问题也就解决了,所以一直懒得去仔细钻研这问题。

本文会探讨两类问题,一是import,二是相对路径。均基于python3(更新中,自己也还在学习)。

在这里插入图片描述

pathProject
- src
-- main.py
-- package1
--- p1.py
-- package2
--- p2.py
--- p2_1.py

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

下面是针对自己的疑问,进行实验的结果

Q1:在pathProject下执行python src/main.py与pathProject/src下执行python main.py的区别?

A1:
首先,对于import来说,只与被执行文件所在的目录有关,上面两种方式产生的结果都是将pathProject/src加入sys.path中(参考实验1代码;
其次,对于相对路径来说,则与当前的所在目录有关,在pathProject下执行python src/main.py,无论哪个文件中,相对路径都是基于pathProject,在pathProject/src下执行python main.py,相对路径都是基于pathProject/src(参考实验2代码)。

实验1

"""
p2.py
"""
import sys

print(sys.path)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

实验结果
在这里插入图片描述
实验2

"""
p2.py
"""
import os

print(os.path.abspath('.'))
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
"""
main.py
"""
from package2 import p2

if __name__ == '__main__':
    print('main')
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

在这里插入图片描述

Q2:如何在p2.py中引入p1.py?

A2:这取决于被执行的文件目录,如同第一个问题一样,import的原理就是通过sys.path检查搜索路径,若当前位于src内,那么在p2.py中写from package1 import p1,然后执行python package2/p2.py,则会报错,因为sys.path中包含的路径是src/package2,没有package1的搜索路径;
反之,若在src内,执行python main.py,则不会报错,因为sys.path内包含src,也就是囊括了package1所在路径。
(ps: pycharm会自动将一些路径加入sys.path,此处不考虑这种情况,本文所有实验均基于vscode)

Q3:如何在p2.py中引入p2_1.py?

A3: 若直接在p2.py中写import p2_1,然后位于执行python main.py会报错,因为搜索路径并不能囊括进p2_1.py,需要写成from . import p2_1才行。
此处参考知乎回答:python中import的用法

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/1000910
推荐阅读
相关标签
  

闽ICP备14008679号