本文目錄一覽:
- 1、python怎麼導入自己寫的模塊
- 2、python中怎麼import自己寫的模塊
- 3、如何在python中添加自定義模塊
- 4、Python怎麼import自己寫的模塊
- 5、python中,如果自己寫的模塊與系統模塊重名,該怎麼調用系統的模塊?
python怎麼導入自己寫的模塊
自己寫的模塊,要放在需要導入文件同一個目錄或者放在lib或者script目錄(默認的模塊目錄)
然後,import
名字
就行。主要不要帶後綴,帶文件名就行
python中怎麼import自己寫的模塊
(1)主程序與模塊程序在同一目錄下:
如下面程序結構:
?
1
2
3
`– src
|– mod1.py
`– test1.py
若在程序test1.py中導入模塊mod1, 則直接使用import mod1或from mod1 import *;
(2)主程序所在目錄是模塊所在目錄的父(或祖輩)目錄
如下面程序結構:
?
1
2
3
4
5
`– src
|– mod1.py
|– mod2
| `– mod2.py
`– test1.py
若在程序test1.py中導入模塊mod2, 需要在mod2文件夾中建立空文件__init__.py文件(也可以在該文件中自定義輸出模塊接口); 然後使用 from mod2.mod2 import * 或import mod2.mod2.
(3)主程序導入上層目錄中模塊或其他目錄(平級)下的模塊
如下面程序結構:
?
1
2
3
4
5
6
7
`– src
|– mod1.py
|– mod2
| `– mod2.py
|– sub
| `– test2.py
`– test1.py
若在程序test2.py中導入模塊mod1和mod2。首先需要在mod2下建立__init__.py文件(同(2)),src下不必建立該文件。然後調用方式如下:
下面程序執行方式均在程序文件所在目錄下執行,如test2.py是在cd sub;之後執行python test2.py
而test1.py是在cd src;之後執行python test1.py; 不保證在src目錄下執行python sub/test2.py成功。
?
1
2
3
4
import sys
sys.path.append(“..”)
import mod1
import mod2.mod2
(4)從(3)可以看出,導入模塊關鍵是能夠根據sys.path環境變量的值,找到具體模塊的路徑。這裡僅介紹上面三種簡單情況。
評論:
win下面cmd當前目錄上運行python交互的時候, 當前目錄如果是個python包,要在當前交互引入它, 也需要 sys.path.append(“..”), 不過我個人的做法通常是sys.path.insert(0,”..”)
?
1
2
3
4
5
6
c:/py25cd sub
c:/py25python
#import sub #這裡提示找不到
import sys
sys.path.insert(0,’..’) #或者sys.path.append(“..”)
import sub #這裡引入成功
貌似是大蛇的當前目錄是”能識兒子不識父親”的,
也就是要引入當前包的父包的話,要sys.path.insert(0,’../..’)了…
如何在python中添加自定義模塊
通過文件進行設置
在Python的安裝目錄下,找到 \Lib\site-packages 文件夾,在該文件夾下新建一個以.pth為後綴名的文件,編輯文件,內容為要添加的庫路徑。(我的文件名命名為..pth)。添加路徑示例:文件內容寫入要引用的庫路徑
步驟1:建立文件,可以首先建立一個文本文檔,寫下路徑如D:\\Python\\mulib
步驟2:保存文檔時,將文件類型選為所有,文件名為 setpath.pth。文件名為什麼無所謂,主要是只有當文檔類型選為所有,才可以定義文件類型為.pth
步驟3:將保存好的文件放在Python的site-packages文件夾中就完成了。
Python怎麼import自己寫的模塊
python包含子目錄中的模塊方法比較簡單,關鍵是能夠在sys.path裏面找到通向模塊文件的路徑。
下面將具體介紹幾種常用情況:
(1)主程序與模塊程序在同一目錄下:
如下面程序結構:
`– src
|– mod1.py
`– test1.py
若在程序test1.py中導入模塊mod1, 則直接使用import mod1或from mod1 import *;
(2)主程序所在目錄是模塊所在目錄的父(或祖輩)目錄
如下面程序結構:
`– src
|– mod1.py
|– mod2
| `– mod2.py
`– test1.py
若在程序test1.py中導入模塊mod2, 需要在mod2文件夾中建立空文件__init__.py文件(也可以在該文件中自定義輸出模塊接口); 然後使用 from mod2.mod2 import * 或import mod2.mod2.
(3)主程序導入上層目錄中模塊或其他目錄(平級)下的模塊
如下面程序結構:
`– src
|– mod1.py
|– mod2
| `– mod2.py
|– sub
| `– test2.py
`– test1.py
若在程序test2.py中導入模塊mod1和mod2。首先需要在mod2下建立__init__.py文件(同(2)),src下不必建立該文件。然後調用方式如下:
下面程序執行方式均在程序文件所在目錄下執行,如test2.py是在cd sub;之後執行python test2.py
而test1.py是在cd src;之後執行python test1.py; 不保證在src目錄下執行python sub/test2.py成功。
import sys
sys.path.append(“..”)
import mod1
import mod2.mod2
(4)從(3)可以看出,導入模塊關鍵是能夠根據sys.path環境變量的值,找到具體模塊的路徑。這裡僅介紹上面三種簡單情況。
python中,如果自己寫的模塊與系統模塊重名,該怎麼調用系統的模塊?
sys.path是一個list,存放了當前所有import搜索的路徑。
絕大多數情況下,首個元素是””,即空串,也就是說,當你import re的時候,首先搜索的是”re”,這時候就會直接在當前目錄搜索到re。如下圖:
解決方法也有不止一個:
1,在當前目錄創建一個子文件夾,例如mine,在mine里放一個__init__.py,不用有代碼,空文件即可。使用的時候:import mine.re
2,在sys.path上做手腳,把第一個空串挪到最後面去:
import sys
sys.path = sys.path[1:]
sys.path.append(“”)
這樣當前目錄會跑到最後面去,從而達到最後搜索的目的。
不過這很可能有副作用,即你創建的模塊,不能和前面搜索路徑里的任何文件重名,否則會無法import你的模塊。
這也是為什麼默認把當前路徑放在最前搜索的原因,因為是用戶自己寫的,顯然優先級最高。
儘管就你的問題作出分析和提出一些可能的解決辦法,但是嚴重不建議在實際工程起和系統模塊重名的文件名,這是自找麻煩。
當然,研究探討它的實現原理,始終是值得肯定的。
最後強調一下,當你在當前文件夾創建了一個sys.py時,方法2不好用!
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/196963.html