Python查找模塊路徑的方法-創(chuàng)新互聯(lián)

創(chuàng)新互聯(lián)www.cdcxhl.cn八線動態(tài)BGP香港云服務器提供商,新人活動買多久送多久,劃算不套路!

創(chuàng)新互聯(lián)建站是一家集網(wǎng)站建設(shè),隆林企業(yè)網(wǎng)站建設(shè),隆林品牌網(wǎng)站建設(shè),網(wǎng)站定制,隆林網(wǎng)站建設(shè)報價,網(wǎng)絡(luò)營銷,網(wǎng)絡(luò)優(yōu)化,隆林網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強企業(yè)競爭力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時我們時刻保持專業(yè)、時尚、前沿,時刻以成就客戶成長自我,堅持不斷學習、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實用型網(wǎng)站。

小編給大家分享一下Python查找模塊路徑的方法,希望大家閱讀完這篇文章后大所收獲,下面讓我們一起去探討吧!

對于編譯型的語言,比如C#中的一個.cs文件,Java中的一個.java或者編譯后的.class文件可以認為是一個模塊(但常常不表述為模塊);對于解釋型的語言會更加直觀些,比如PHP的.php文件,在Python中就是.py文件可以認為是一個模塊。在“模塊”之上有“包”,主要是為了方便組織和管理模塊。比如C#中編譯后的.dll文件(但常常不表述為包Package,而是庫Library),Java將.class打包后的.jar文件,PHP的.phar文件(模仿Java包),在Python中一個特殊定義的文件夾是一個包,可以打包為egg文件。但對于解釋型語言“包”并沒有編譯成低級語言而后打包的意思,只是更加方便模塊化和管理模塊間的依賴。每種編程語言對于模塊和包管理都有一定的約定,不了解這些約定,那會給學習這種語言的帶來障礙。下面我想來梳理一下Python的這些約定。

一、Python查找模塊的路徑

運行Python應用或引用Python模塊,Python解釋器要有一個查找的過程??梢酝ㄟ^設(shè)置一個環(huán)境變量PYTHONPATH為Python增加一個搜索路徑,以方便查找到相關(guān)Python模塊(不同的操作系統(tǒng)環(huán)境變量的設(shè)置稍有不同,默認以下都是WIndows環(huán)境),這與眾多應用程序需要設(shè)置一個系統(tǒng)環(huán)境變量的道理是一樣的。在命令行中可以通過以下命令設(shè)置:

C:\Users\Administrator>set PYTHONPATH=E:/Project/Python/ModuleAndPackage/

進入Python環(huán)境后可以,通過Python的sys.path屬性獲得當前搜索路徑的配置,可以看到之前我們設(shè)置的路徑已經(jīng)在當前搜索路徑中了。

C:\Users\Administrator>python
Python 2.7.11 (v2.7.11:6d1b6a68f775, Dec  5 2015, 20:32:19) [MSC v.1500 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> sys.path
['', 'E:\\Project\\Python\\ModuleAndPackage', 'C:\\Windows\\system32\\python27.zip','C:\\Python\\DLLs','C:\\Python\\
lib', 'C:\\Python\\lib\\plat-win', 'C:\\Python\\lib\\lib-tk', 'C:\\Python', 'C:\\Python\\lib\\site-packages']
>>>

也可以通過sys模塊的append方法在Python環(huán)境中增加搜索路徑。

>>> sys.path.append("E:\\Project\\Python\\ModuleAndPackage2")
>>> sys.path
['', 'E:\\Project\\Python\\ModuleAndPackage', 'C:\\Windows\\system32\\python27.zip','C:\\Python\\DLLs','C:\\Python\\
lib', 'C:\\Python\\lib\\plat-win', 'C:\\Python\\lib\\lib-tk', 'C:\\Python', 'C:\\Python\\lib\\site-packages','E:\\
Project\\Python\\ModuleAndPackage2']
>>>

二、Python中的模塊和包

前面已經(jīng)提到每個.py文件都是可以認為是一個Python模塊,.py文件中可以包含類、方法、變量和常量(Python還沒有嚴格意義上的常量,只是約定大寫的變量作為常量),文件內(nèi)也可以直接寫所有的邏輯語句并在加載時從上之下直接執(zhí)行,這與其他解釋型語言是類似的。例如我們選擇在文件夾ModuleAndPackage中創(chuàng)建一個文本文件person.py文件即創(chuàng)建了一個簡單的Python模塊,其內(nèi)容如下:

# -*- coding: utf-8 -*-

ID = 1
name =  "This person"
print name
def say(something):
    print name,'says', something

那么接下來我們就可以在Python環(huán)境中執(zhí)行person.py。我們可以直接像執(zhí)行一個批處理文件那樣執(zhí)行person.py,在cmd命令行輸入:

Python E:/Project/Python/ModuleAndPackage/person.py

本質(zhì)上任何一個Python應用的入口模塊都是這樣被執(zhí)行的(像C#和Java中的main函數(shù)),但是引用一個模塊,就要建立運行它的上下文環(huán)境。我們先設(shè)置一個環(huán)境變量PYTHONPATH,以便Python解釋器找到person.py模塊,然后import person模塊,即可訪問其中的方法或變量。

C:\Users\Administrator>python
Python 2.7.11 (v2.7.11:6d1b6a68f775, Dec  5 2015, 20:32:19) [MSC v.1500 32 bit (
Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import person
This person
>>> person.say("hello")
This person says hello
>>> print person.name
This person
>>>

Python需要去某些固定的路徑下去查找Python模塊,上面我們設(shè)置在ModuleAndPackage中查找。但是這些路徑下也是有目錄層次的,Python是如何查找子目錄中的模塊呢?特別是引用第三方包時,我們也需要知道一定的層次關(guān)系。實際上,Python通過目錄和文件構(gòu)建包結(jié)構(gòu),并且包是層層嵌套的,和目錄層層嵌套是一樣的,這樣就構(gòu)成了包內(nèi)的訪問路徑(或者命名空間,也可以說Python應用的命名空間與其目錄和文件結(jié)構(gòu)是對應了,似乎缺少了一些靈活,但也更簡單)。例如我們在ModuleAndPackage文件夾下,創(chuàng)建一個文件夾animal,里面創(chuàng)建一個文本文件pet.py,其內(nèi)容如下:

# -*- coding: utf-8 -*-

ID = 2
name =  "This pet"
print name
def run(somewhere):
    print name,'runs', somewhere

那么如何引用pet.py這個模塊呢?按照Python的約定,需要在animal文件夾中創(chuàng)建名為__init__.py的空文本文件,以標識animal文件夾是一個包。倘若animal文件夾內(nèi)還有文件夾作為包,也必須包含__init__.py文件。這樣就層層標識了訪問的路徑。

>>> import animal.pet
This pet
>>> print animal.pet.name
This pet
>>> animal.pet.run("everywhere")
This pet runs everywhere
>>>

或者使用from關(guān)鍵字直接導入模塊內(nèi)的屬性或方法:

>>> from animal.pet import name,run
>>> print name
This pet
>>> run("everywhere")
This pet runs everywhere
>>>

看完了這篇文章,相信你對Python查找模塊路徑的方法有了一定的了解,想了解更多相關(guān)知識,歡迎關(guān)注創(chuàng)新互聯(lián)-成都網(wǎng)站建設(shè)公司行業(yè)資訊頻道,感謝各位的閱讀!

分享名稱:Python查找模塊路徑的方法-創(chuàng)新互聯(lián)
文章分享:http://muchs.cn/article32/dcghpc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供手機網(wǎng)站建設(shè)、網(wǎng)站內(nèi)鏈網(wǎng)站建設(shè)、網(wǎng)站收錄、網(wǎng)頁設(shè)計公司、網(wǎng)站營銷

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

搜索引擎優(yōu)化