欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python實現(xiàn)同級目錄調用的示例詳解

 更新時間:2024年06月25日 11:10:38   作者:碼農研究僧  
同級目錄指的是位于同一級別的文件夾,這些文件夾具有相同的層級結構,它們相互平行,沒有一個被包含在另一個之中,本文將給大家介紹python實現(xiàn)同級目錄調用的示例,需要的朋友可以參考下

前言

通過制作簡易的Demo,讓其更加深入的了解如何使用

在這里插入圖片描述

1. 問題所示

發(fā)現(xiàn)python的同級目錄相互調用會出Bug

E:\software\anaconda3\envs\py3.10\python.exe F:\python_project\test\Father\child\file3.py 
Traceback (most recent call last):
  File "F:\python_project\test\Father\child\file3.py", line 1, in <module>
    from ..file1 import greet  # 這將失敗,沒有 __init__.py
ImportError: attempted relative import with no known parent package

Process finished with exit code 1

截圖如下:

在這里插入圖片描述

2. 原理分析

出現(xiàn) ImportError: attempted relative import with no known parent package 錯誤的原因是 Python 無法識別當前腳本的父包,因此相對導入失敗

要解決這個問題并理解其背后的原理,需要了解以下幾點:

原理分析

相對導入的限制

相對導入(例如,from …module import something)只能在包(包含 __init__.py 文件的目錄)中使用
當運行腳本時,如果它所在的包沒有正確識別,Python無法解析相對導入

腳本直接運行的問題

如果直接運行一個腳本(例如,通過 python file3.py),該腳本的包上下文不會被識別
相對導入會失敗,因為Python不知道如何定位腳本的父包

3. 解決方法

先給一個Demo

其文件結構如下:

test/
├── Father/
│   ├── file1.py
│   └── child/
│       └── file3.py

file1如下:

def greet():
    print("Hello from file1")

file3如下:

from ..file1 import greet  # 這將失敗,沒有 __init__.py

def main():
    greet()

if __name__ == "__main__":
    main()

這將執(zhí)行出錯

通用的解決方式有如下:

3.1 添加父目錄

在file3中修改代碼為如下:

import sys
import os

# 將父目錄添加到 sys.path
sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))

from Father.file1 import greet

def main():
    greet()

if __name__ == "__main__":
    main()

執(zhí)行的結果如下:

在這里插入圖片描述

3.2 相對路徑

修改file3如下:

from ..file1 import greet

def main():
    greet()

if __name__ == "__main__":
    main()

但是 執(zhí)行結果如下:

在這里插入圖片描述

需要使用命令行的方式來執(zhí)行:

在這里插入圖片描述

注意差異

如果file3的文件如下:

from Father.file1 import greet

def main():
    greet()

if __name__ == "__main__":
    main()

還是可以直接運行的:

在這里插入圖片描述

3.3 添加init

截圖如下:

在這里插入圖片描述

對應file3的文件如下:

from Father.file1 import greet

def main():
    greet()

if __name__ == "__main__":
    main()

截圖如下:

在這里插入圖片描述

也可使用命令行的方式來執(zhí)行:

在這里插入圖片描述

__init__.py 文件在 Python 3.3 及其之后的版本中不是必須的,但它有助于將目錄標識為一個包

到此這篇關于python實現(xiàn)同級目錄調用的示例詳解的文章就介紹到這了,更多相關python同級目錄調用內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Python基礎教程之while循環(huán)用法講解

    Python基礎教程之while循環(huán)用法講解

    Python中除了for循環(huán)之外還有一個while循環(huán),下面這篇文章主要給大家介紹了關于Python基礎教程之while循環(huán)用法講解的相關資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-12-12
  • pandas參數(shù)設置的實用小技巧

    pandas參數(shù)設置的實用小技巧

    這篇文章主要給大家介紹了關于pandas參數(shù)設置的實用小技巧,文中通過實例代碼結束的非常詳細,對大家學習或者使用pandas具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2020-08-08
  • Python圖像識別+KNN求解數(shù)獨的實現(xiàn)

    Python圖像識別+KNN求解數(shù)獨的實現(xiàn)

    這篇文章主要介紹了Python圖像識別+KNN求解數(shù)獨的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-11-11
  • Python獲取當前腳本文件夾(Script)的絕對路徑方法代碼

    Python獲取當前腳本文件夾(Script)的絕對路徑方法代碼

    在本篇文章中小編給各位整理了關于Python獲取當前腳本文件夾(Script)的絕對路徑實例代碼內容,有需要的朋友們學習下。
    2019-08-08
  • python?中的?module?和?package

    python?中的?module?和?package

    這篇文章主要介紹了?python?中的?module?和?package?,文章基于Python的相關資料展開對主題的詳細介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-04-04
  • 如何創(chuàng)建第一個Pygame程序

    如何創(chuàng)建第一個Pygame程序

    本文主要介紹了如何創(chuàng)建第一個Pygame程序,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • 如何利用python查找電腦文件

    如何利用python查找電腦文件

    利用python查找電腦里的文件非常方便,首先是導入模塊os,然后利用os.listdir()打開目錄下的所有文件,files其實是一個列表。具體操作方法大家參考下本文
    2018-04-04
  • Python實現(xiàn)提取XML內容并保存到Excel中的方法

    Python實現(xiàn)提取XML內容并保存到Excel中的方法

    這篇文章主要介紹了Python實現(xiàn)提取XML內容并保存到Excel中的方法,涉及Python針對xml文件的讀取、解析以及Excel文件的寫入、保存等相關操作技巧,需要的朋友可以參考下
    2018-09-09
  • 用map函數(shù)來完成Python并行任務的簡單示例

    用map函數(shù)來完成Python并行任務的簡單示例

    這篇文章主要介紹了用map函數(shù)來完成Python并行任務的簡單示例,多線程和多進程編程的問題一直都是Python中的熱點和難點,需要的朋友可以參考下
    2015-04-04
  • Python中的分布式框架Ray的安裝與使用教程

    Python中的分布式框架Ray的安裝與使用教程

    Ray框架下不僅可以通過conda和Python十分方便的構建一個集群,還可以自動的對分布式任務進行并發(fā)處理,且支持GPU分布式任務的提交,本文介紹了基于Python的分布式框架Ray的基本安裝與使用,感興趣的朋友一起看看吧
    2024-08-08

最新評論