python跨目錄引用模組

2021-10-08 18:07:36 字數 2430 閱讀 4147

最近學習python,匯入模組的時候遇到了一些問題,通過查詢資料解決。做一些必要的筆記,一來是對自己學習的知識的鞏固,二來對有同樣問題的人有參考作用

一 跨目錄呼叫模組

1、呼叫同級目錄下的模組

目錄結構:

– src

|– mod1.py

|– test1.py

若在程式test1.py中匯入模組mod1, 則直接使用:

import mod1引入模組, 然後通過mod1.function_name()呼叫方法;

或者通過from mod1 import function_name引入方法,通過function_name()呼叫方法。

2、呼叫子目錄下的模組

目錄結構如下:

– src

|– mod1.py

|– lib

| |– mod2.py

|– test1.py

這時,如果想在程式test1.py中匯入模組mod2.py,可以在lib件夾中建立空檔案__init__.py檔案。

新的目錄結構如下:

– src

|– mod1.py

|– lib

| |–init.py

| |– mod2.py

|– test1.py

然後使用:

from lib import mod2引入模組,然後通過mod2.function_name()呼叫方法;

3、呼叫上級目錄下的模組

目錄結構如下:

– src

|– mod1.py

|– lib

| |– mod2.py

|– sub

| |– test2.py

這裡想要實現test2.py呼叫mod1.pymod2.py,做法是我們先跳到src目錄下面,然後在lib上當下建乙個空檔案__init__.py,就可以像第二步呼叫子目錄下的模組一樣,通過import lib.mod2進行呼叫了。具體**如下:

import sys

'..'

)from lib import mod2

然後就可以通過mod2.function_name()的方式呼叫方法。

再來看我們這個栗子,test2.py回到上一級就是src這個目錄下,這樣就和lib是同一級目錄了,lib下面已經建立了__init__.py檔案,已經是個模組可以用來引入,這個時候from lib import mod2就沒有問題可以順利呼叫啦。

4、通過絕對路徑匯入模組

比如,對於呼叫上級目錄下的模組:

import sys

'c:\\test\\src'

)import mod1

from lib import mod2

這裡想要實現test2.py呼叫mod1.pymod2.py,做法是我們先跳到src目錄下面,直接可以呼叫mod1,然後在lib上當下建乙個空檔案__init__.py,就可以像第二步呼叫子目錄下的模組一樣,通過from lib import mod2進行呼叫了。

注意:sys.path新增目錄時注意是在windows還是在linux下,windows下需要 『\\』 否則會出錯。

二 補充說明

1、_init_.py

乙個包是乙個帶有特殊檔案__init__.py的目錄。__init__.py檔案定義了包的屬性和方法。其實它可以什麼也不定義;可以只是乙個空檔案,但是必須存在。如果__init__.py不存在,這個目錄就僅僅是乙個目錄,而不是乙個包,它就不能被匯入或者包含其它的模組和巢狀包。

2、.pyc檔案

執行起來.pyc.py是一樣的,.py是直接以原始碼的形式進行呈現,而.pyc只是位元組碼檔案。

三 總結

python在不同目錄下匯入模組的方法

Python模組 跨目錄 呼叫總結

系統模組呼叫 說到模組呼叫,大家應該都對import有個基本的了解,在專案裡面非常常見的比如import time,from selenium import webdriver等,我們經常在python中通過from import import 的語法可以引用一些系統模組,把系統模組引入後就可以呼叫...

0013跨目錄模組呼叫

在乙個目錄中呼叫模組和類 模組student的students類 class students def init self,name,city self.name name self.city city print my name is s and come from s name,city def...

python 模組引用 python如何引用模組

模組實際上就是 以.py為結尾的檔案 注意點 自定義的模組盡量不要和系統模組重名 模組內部封裝了很多實用的功能,有時在模組外部呼叫就需要將其匯入,匯入模組簡單劃分,實際上就只有兩種 import from import 詳細一點劃分有五種 1,improt 模組名 呼叫 模組名.功能名 2,impo...