溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

python添加模塊搜索路徑和包的導(dǎo)入方法

發(fā)布時(shí)間:2020-09-26 12:51:25 來(lái)源:腳本之家 閱讀:177 作者:Teingi 欄目:開(kāi)發(fā)技術(shù)

方法一:函數(shù)添加

1 import sys

2 查看sys.path

3 添加sys.path.append("c:\\")

方法二:修改環(huán)境變量

w用戶可以修改系統(tǒng)環(huán)境變量PYTHONPATH

方法三:增加.pth文件,推薦!

在site-packages添加一個(gè)路徑文件,如mypkpath.pth,必須以.pth為后綴,寫上你要加入的模塊文件所在的目錄名稱就是了。

1 windows

c:\python27\site-packages

# 我們的學(xué)員把pth文件直接放在c:\python27

# (或其他python安裝目錄)目錄下測(cè)試也是有效的

# 2015.9.23

2 linux(ubuntu)

/usr/local/lib/python2.7/dist-packages (note by shanql, 我是放在這個(gè)目錄下有效的,所添加的目錄一定要存在,不存在則會(huì)不成功)

2 linux(redhat)

/usr/lib/python2.7/site-packages

包的調(diào)用

為了避免模塊名沖突,Python又引入了按目錄來(lái)組織模塊的方法,稱為包(Package)。

python添加模塊搜索路徑和包的導(dǎo)入方法

每一個(gè)包目錄下面都會(huì)有一個(gè)__init__.py的文件,這個(gè)文件是必須存在的,否則,Python就把這個(gè)目錄當(dāng)成普通目錄(文件夾),而不是一個(gè)包。__init__.py可以是空文件,也可以有Python代碼,因?yàn)開(kāi)_init__.py本身就是一個(gè)模塊,而它的模塊名就是對(duì)應(yīng)包的名字。調(diào)用包就是執(zhí)行包下的__init__.py文件。

跨包調(diào)用(當(dāng)前目錄下有modulepack1包):

from modulepack1[.modulepack2] import module

如果當(dāng)前目錄下能夠找到要調(diào)用的包,可以直接from包import模塊,如果當(dāng)前目錄找不到要調(diào)用的包,需要向sys.path添加包的所在絕對(duì)路徑。

import一個(gè)包名,就等于執(zhí)行了這個(gè)包下的__init__文件。

示例:

python添加模塊搜索路徑和包的導(dǎo)入方法

在nod1里import hello是找不到的,需要手動(dòng)添加包路徑,如果找到那是因?yàn)閜ycharm給加了不必要的路徑,以命令行執(zhí)行為準(zhǔn)。

import sys,os
BASE_DIR=os.path.dirname(os.path.dirname(os.path.abspath(__file__)))  #__file__獲取執(zhí)行文件相對(duì)路徑,整行為取上一級(jí)的上一級(jí)目錄
sys.path.append(BASE_DIR)  #添加路徑
import hello
hello.hello1()

模塊調(diào)用測(cè)試

if __name__=='__main__':  #__name__方法判斷
  print('ok')

在一個(gè)py模塊直接執(zhí)行print(__name__)會(huì)輸出__main__,表示當(dāng)前這個(gè)文件屬于執(zhí)行文件,如果從其他的py模塊中導(dǎo)入一個(gè)py模塊,執(zhí)行被導(dǎo)入的py模塊中的print(__name__)會(huì)輸出被導(dǎo)入的模塊的模塊名稱,那么if判斷就不會(huì)成功,所以導(dǎo)入的時(shí)候不會(huì)執(zhí)行判斷內(nèi)的代碼。

主要用在調(diào)試功能,即一個(gè)模塊被調(diào)用的時(shí)候不執(zhí)行內(nèi)容,而自己調(diào)試模塊的時(shí)候可以順利的執(zhí)行模塊內(nèi)容。

以上這篇python添加模塊搜索路徑和包的導(dǎo)入方法就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持億速云。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI