狠狠操夜夜甜|人妻在线中文字幕亚洲无码不卡av|一区二区欧美亚洲|日躁夜躁狠狠躁2001|亚洲,超碰,欧美|18AV成人电影|午夜成人免费在线|婷婷激情网深爱五月|色欲综合成人在线|在线美女搞黄大片

中企動(dòng)力 > 頭條 > python中的包

網(wǎng)站性能檢測(cè)評(píng)分

注:本網(wǎng)站頁(yè)面html檢測(cè)工具掃描網(wǎng)站中存在的基本問(wèn)題,僅供參考。

python中的包

python如何導(dǎo)入第三方依賴包API 營(yíng)銷視頻課程

img

侯千兒

關(guān)注

有時(shí)候從網(wǎng)上下載下來(lái)的python API沒(méi)法導(dǎo)入,出現(xiàn)ImportError: No module named * 錯(cuò)誤。以下提供解決方案。

將依賴包目錄放置到*:\Python*\Lib\site-packages\中,即python的安裝目錄中。首先確定API目錄下是否有__init__.py文件,如果沒(méi)有,請(qǐng)新建一個(gè)。

打開(kāi)API主運(yùn)行文件,查看里面的類名稱。此處為main.py文件,類為class dcVerCode。

此處以導(dǎo)入main中的類dcVerCode為例。打開(kāi)__init__.py,輸入:from main import dcVerCode這樣就完成了依賴包的指定。然后再在程序中導(dǎo)入該包即可,此處的依賴包名稱為qqcr(即目錄名稱),所以輸入:import qqcr即可完成包的導(dǎo)入。

python包管理之pip,其實(shí)很簡(jiǎn)單! 流量視頻課程

img

Eric888

關(guān)注

前言

pip 是一個(gè)Python包管理工具,主要是用于安裝 PyPI 上的軟件包,可以替代 easy_install 工具。

安裝pip

1、源碼安裝

Python2編譯安裝的時(shí)候沒(méi)有安裝pip,可以直接從官方地址下載就可以了。官方地址:https://pypi.python.org/pypi/pip

下載解壓后,進(jìn)入目錄直接運(yùn)行python安裝就可以了

python setup.py install

(PS:Python3編譯安裝就默認(rèn)帶了pip了)

2、使用包管理軟件安裝

Linux系統(tǒng)一般都是有自帶Python,如果只需要系統(tǒng)自帶的Python,直接從系統(tǒng)的包管理器安裝可以了。

yum install python-pip

或者

apt-get install python-pip

pip更新

pip可以自己更新自己

pip install -U pip

基本使用

(以django包為例)

1、安裝PyPI軟件

pip install django

2、查看具體安裝文件

pip show --files django

3、查看哪些軟件需要更新

pip list --outdated

4、升級(jí)軟件包

pip install --upgrade django

5、卸載軟件包

pip uninstall django

6、安裝具體版本軟件

pip install django #最新版本

pip install django==1.11.8 # 指定版本

pip install 'django>=1.11.0' # 大于某個(gè)版本

7、 Requirements文件安裝依賴軟件

Requirements文件 一般記錄的是依賴軟件列表,通過(guò)pip可以一次性安裝依賴軟件包:

pip freeze >requirements.txt

pip install -r requirements.txt

8、 列出軟件包清單

pip list

pip list --outdated

9、查看軟件包信息

pip show django

10、搜索

pip search django

配置pip

配置文件: $HOME/.pip/pip.conf,

比如使用阿里云的同步鏡像:

[global]index-url = http://mirrors.aliyun/pypi/simple/[install]trusted-host=mirrors.aliyun

命令行自動(dòng)補(bǔ)全

對(duì)于bash:

pip completion --bash >>~/.profile

對(duì)于zsh:

pip completion --zsh >>~/.zprofile

看完這篇文章還不懂Python中的閉包,請(qǐng)拍死小編 公司視頻課程

img

狄惜夢(mèng)

關(guān)注

Python作為一門編程語(yǔ)言,被昵稱為“膠水語(yǔ)言”,更被熱愛(ài)它的程序員譽(yù)為“最美麗的”編程語(yǔ)言。從云端、客戶端,到物聯(lián)網(wǎng)終端,python應(yīng)用無(wú)處不在。

Python中的閉包不是一個(gè)一說(shuō)就能明白的概念,但是隨著你往學(xué)習(xí)的深入,無(wú)論如何你都需要去了解這么一個(gè)東西。

閉包的概念

我們嘗試從概念上去理解一下閉包。

在一些語(yǔ)言中,在函數(shù)中可以(嵌套)定義另一個(gè)函數(shù)時(shí),如果內(nèi)部的函數(shù)引用了外部的函數(shù)的變量,則可能產(chǎn)生閉包。閉包可以用來(lái)在一個(gè)函數(shù)與一組“私有”變量之間創(chuàng)建關(guān)聯(lián)關(guān)系。在給定函數(shù)被多次調(diào)用的過(guò)程中,這些私有變量能夠保持其持久性。—— 維基百科

用比較容易懂的人話說(shuō),就是當(dāng)某個(gè)函數(shù)被當(dāng)成對(duì)象返回時(shí),夾帶了外部變量,就形成了一個(gè)閉包??蠢印?/p>

支持將函數(shù)當(dāng)成對(duì)象使用的編程語(yǔ)言,一般都支持閉包。比如Python, JavaScript。

如何理解閉包

閉包存在有什么意義呢?為什么需要閉包?

我個(gè)人認(rèn)為,閉包存在的意義就是它夾帶了外部變量(私貨),如果它不夾帶私貨,它和普通的函數(shù)就沒(méi)有任何區(qū)別。同一個(gè)的函數(shù)夾帶了不同的私貨,就實(shí)現(xiàn)了不同的功能。其實(shí)你也可以這么理解,閉包和面向接口編程的概念很像,可以把閉包理解成輕量級(jí)的接口封裝。

接口定義了一套對(duì)方法簽名的約束規(guī)則。

在這個(gè)例子里,我們想要一個(gè)給content加tag的功能,但是具體的tag_name是什么樣子的要根據(jù)實(shí)際需求來(lái)定,對(duì)外部調(diào)用的接口已經(jīng)確定,就是add_tag(content)。如果按照面向接口方式實(shí)現(xiàn),我們會(huì)先把a(bǔ)dd_tag寫成接口,指定其參數(shù)和返回類型,然后分別去實(shí)現(xiàn)a和b的add_tag。

但是在閉包的概念中,

add_tag

就是一個(gè)函數(shù),它需要

tag_name

content

兩個(gè)參數(shù),只不過(guò)

tag_name

這個(gè)參數(shù)是打包帶走的。所以一開(kāi)始時(shí)就可以告訴我怎么打包,然后帶走就行。

上面的例子不太生動(dòng),其實(shí)在我們生活和工作中,閉包的概念也很常見(jiàn)。比如說(shuō)手機(jī)撥號(hào),你只關(guān)心電話打給誰(shuí),而不會(huì)去糾結(jié)每個(gè)品牌的手機(jī)是怎么實(shí)現(xiàn)的,用到了哪些模塊。再比如去餐館吃飯,你只要付錢就可以享受到服務(wù),你并不知道那桌飯菜用了多少地溝油。這些都可以看成閉包,返回來(lái)的是一些功能或者服務(wù)(打電話,用餐),但是這些功能使用了外部變量(天線,地溝油等等)。

你也可以把一個(gè)類實(shí)例看成閉包,當(dāng)你在構(gòu)造這個(gè)類時(shí),使用了不同的參數(shù),這些參數(shù)就是閉包里的包,這個(gè)類對(duì)外提供的方法就是閉包的功能。但是類遠(yuǎn)遠(yuǎn)大于閉包,因?yàn)殚]包只是一個(gè)可以執(zhí)行的函數(shù),但是類實(shí)例則有可能提供很多方法。

何時(shí)使用閉包

其實(shí)閉包在Python中很常見(jiàn),只不過(guò)你沒(méi)特別注意這就是一個(gè)閉包。比如Python中的裝飾器Decorator,假如你需要寫一個(gè)帶參數(shù)的裝飾器,那么一般都會(huì)生成閉包。

為什么?因?yàn)镻ython的裝飾器是一個(gè)固定的函數(shù)接口。它要求你的裝飾器函數(shù)(或裝飾器類)必須返回這樣一種接口,接受一個(gè)函數(shù)并返回一個(gè)函數(shù):

那么如果你的裝飾器如果帶參數(shù)呢?那么你就需要在原來(lái)的裝飾器上再包一層,用于接收這些參數(shù)。這些參數(shù)(私貨)傳遞到內(nèi)層的裝飾器里后,閉包就形成了。所以說(shuō)當(dāng)你的裝飾器需要自定義參數(shù)時(shí),一般都會(huì)形成閉包。(類裝飾器例外)

# 不用@的寫法如下# hello = html_tag('b')(hello)# html_tag('b') 是一個(gè)閉包,它接受一個(gè)函數(shù),并返回一個(gè)函數(shù)print hello() # Hello Toby!print hello('world') # Hello world!

再深入一點(diǎn)

其實(shí)也不必太深入,理解這上面的概念,很多看起來(lái)頭疼的代碼也不過(guò)如此。

下面讓我們來(lái)了解一下閉包的包到底長(zhǎng)什么樣子。其實(shí)閉包函數(shù)相對(duì)與普通函數(shù)會(huì)多出一個(gè)

__closure__

的屬性,里面定義了一個(gè)元組用于存放所有的

cell

對(duì)象,每個(gè)

cell

對(duì)象一一保存了這個(gè)閉包中所有的外部變量。

原理就是這么簡(jiǎn)單。

Python之包管理工具快速入門 公司視頻課程

img

戀曲

關(guān)注

在Python環(huán)境中已經(jīng)有很多成熟的包,可以通過(guò)安裝這些包來(lái)擴(kuò)展我們的程序。

例如,很多時(shí)候Python開(kāi)發(fā)人員都會(huì)去PyPI網(wǎng)站去查找自己想要使用的包,然后進(jìn)行安裝。PyPI ( Python Package Index)是獲得第三方 Python 軟件包以補(bǔ)充標(biāo)準(zhǔn)庫(kù)的一個(gè)站點(diǎn)。

在安裝Python包的過(guò)程中,經(jīng)常涉及到distutils、setuptools、distribute、setup.py、easy_install、easy_install和pip等等。

突然對(duì)Python的包管理凌亂了,這些工具關(guān)系是什么,應(yīng)該怎么去選擇使用?

下面就簡(jiǎn)單介紹下Python包管理相關(guān)的一些內(nèi)容。

Python包管理工具

這么多的Python包管理工具,剛開(kāi)始接觸Python時(shí)會(huì)有點(diǎn)不知如何選擇。其實(shí),當(dāng)查過(guò)Python的官方文檔之后,慢慢就理清了這些工具之間的關(guān)系了,也就沒(méi)有這么混亂了。

下面就分別對(duì)Python中的包管理工具進(jìn)行簡(jiǎn)單的介紹。

distutils

distutils 是 python 標(biāo)準(zhǔn)庫(kù)的一部分,這個(gè)庫(kù)的目的是為開(kāi)發(fā)者提供一種方便的打包方式, 同時(shí)為使用者提供方便的安裝方式。

我們經(jīng)常使用的setup.py就是基于distutils實(shí)現(xiàn)的,然后通過(guò)setup.py就可以進(jìn)行打包或者安裝了。

看一個(gè)簡(jiǎn)單的例子,找一個(gè)目錄創(chuàng)建三個(gè)文件foo.py、bar.py和setup.py,其中setup.py的內(nèi)容如下:

from distutils.core import setupsetup( name='fooBar', version='1.0', author='Will', author_email='wilber@sh', url='http://cnblogs/wilber2013/', py_modules=['foo', 'bar'],)

然后,在該目錄中運(yùn)行 python setup.py sdist ,會(huì)得到以下輸出,同時(shí)生成了一個(gè)"fooBar-1.0.zip"包。

使用者就可以解壓縮這個(gè)包然后執(zhí)行 python setup.py install進(jìn)行安裝,然后就可以使用foo、bar這兩個(gè)模塊了:

關(guān)于更過(guò)如何編寫setup.py的內(nèi)容,請(qǐng)自行參閱Python官方文檔中的setupscript部分。

setuptools 和 distribute

setuptools 是對(duì) distutils 的增強(qiáng),尤其是引入了包依賴管理。我們可以通過(guò)ez_setup.py來(lái)安裝setuptools。

至于distribute,它是setuptools的一個(gè)分支版本。分支的原因是有一部分開(kāi)發(fā)者認(rèn)為 setuptools 開(kāi)發(fā)太慢。但現(xiàn)在,distribute 又合并回了 setuptools 中,所以可以認(rèn)為它們是同一個(gè)東西。

前面看到setup.py可以創(chuàng)建一個(gè)壓縮包,而setuptools使用了一種新的文件格式(.egg),可以為Python包創(chuàng)建 egg文件。setuptools 可以識(shí)別.egg文件,并解析、安裝它

easy_install

當(dāng)安裝好setuptools/distribute之后,我們就可以直接使用easy_install這個(gè)工具了:

1.從PyPI上安裝一個(gè)包:當(dāng)使用 easy_install package 命令后,easy_install 可以自動(dòng)從 PyPI 上下載相關(guān)的包,并完成安裝,升級(jí)

2.下載一個(gè)包安裝:通過(guò) easy_install package.tgz 命令可以安裝一個(gè)已經(jīng)下載的包

3.安裝egg文件:通過(guò) easy_install package.egg 可以安裝一個(gè)egg格式的文件

通過(guò) easy_install --help 命令可以獲取該命令相關(guān)的幫助提示:

根據(jù)上面的分析,可以看到setuptools/distribute和easy_install之間的關(guān)系:

*setuptools/distribute 都擴(kuò)展了 distutils,提供了更多的功能

*easy_install是基于setuptools/distribute的一個(gè)工具,方便了包的安裝和省級(jí)

pip

pip是目前最流行的Python包管理工具,它被當(dāng)作easy_install的替代品,但是仍有大量的功能建立在setuptools之上。

easy_install 有很多不足:安裝事務(wù)是非原子操作,只支持 svn,沒(méi)有提供卸載命令, 安裝一系列包時(shí)需要寫腳本。pip 解決了以上問(wèn)題,已經(jīng)成為新的事實(shí)標(biāo)準(zhǔn)。

pip的使用非常簡(jiǎn)單,并支持從任意能夠通過(guò) VCS 或?yàn)g覽器訪問(wèn)到的地址安裝 Python 包:

*安裝: pip install SomePackage

*卸載: pip uninstall SomePackage

文章的下面部分就重點(diǎn)介紹一下pip相關(guān)的內(nèi)容。

使用pip

在大家使用Python中,推薦使用pip進(jìn)行Python包管理,pip的安裝和使用都比較方便。

pip安裝

pip的安裝有兩種常用的方式:

1.下載get-pip.py文件,然后執(zhí)行 python get-pip.py 進(jìn)行安裝(如果沒(méi)有安裝setuptools,那么get-pip.py會(huì)幫忙安裝)

2.現(xiàn)在pip源碼包,然后通過(guò)setup.py進(jìn)行安裝

pip常用命令

對(duì)于pip,最常用的肯定還是 pip --help ,通過(guò)幫助文檔,就可以大概知道如何使用命令和參數(shù)。

pip常用命令集合:

使用

命令

從PyPI安裝軟件包

pip install SomePackage

卸載軟件包

pip uninstall SomePackage

查看以安裝軟件包

pip list

查看可升級(jí)軟件包

pip list --outdated

升級(jí)軟件包

pip install --upgrade SomePackage

查看軟件包安裝了哪些文件及路徑等信息

pip show --files SomePackage

安裝軟件包的指定版本號(hào)

pip install SomePackage

# latest version

pip install SomePackage==1.0.4

# specific version

pip install 'SomePackage>=1.0.4'

# minimum version

根據(jù)依賴文件安裝軟件包

pip freeze >requirements.txt

# 使用pip導(dǎo)出依賴文件列表

pip install -r requirements.txt

# 根據(jù)依賴文件列表,自動(dòng)安裝對(duì)應(yīng)的軟件包

總結(jié)

本文介紹了Python的各個(gè)包管理工具之間的關(guān)系,相信通過(guò)這篇文章的介紹,就不會(huì)再對(duì)distutils、setuptools、distribute、setup.py、easy_install、easy_install和pip等等名詞感覺(jué)混亂了。

大致了解這些Python包管理工具后,大家應(yīng)該也清楚了怎么選擇和使用。

本文沒(méi)有涉及如何制作并發(fā)布一個(gè)Python包,感興趣的同學(xué)可以去Python官網(wǎng)上查查。

Python創(chuàng)建包 流量視頻課程

img

雷妙海

關(guān)注

Python中創(chuàng)建包是比較方便的,只需要在當(dāng)前目錄建立一個(gè)文件夾,文件夾中包含一個(gè)__init__.py文件和若干個(gè)模塊文件,其中__init__.py可以是一個(gè)空文件,但還是建議將包中所有需要導(dǎo)出的變量放到__all__中,這樣可以確保包的接口清晰明了,易于使用。

Python包的目錄結(jié)構(gòu)示意圖

示例:

包名稱:

mypackage(假設(shè)包中還有兩個(gè)子包)

包文件夾中的文件:

__init__.py

module1.py

定義了一個(gè)fun1()函數(shù),該函數(shù)需要導(dǎo)出

module2.py

定義了一個(gè)fun2()函數(shù),一個(gè)Class2類

子包:

subpackage1

subpackage2

__init__.py文件內(nèi)容(未導(dǎo)出子包中的內(nèi)容)

Python包中的__init__.py文件

img

在線咨詢

建站在線咨詢

img

微信咨詢

掃一掃添加
動(dòng)力姐姐微信

img
img

TOP