只需一行代碼,就能導(dǎo)入所有的Python庫?
今天給大家介紹一個懶人Python庫——Pyforest。
使用一行代碼,就能導(dǎo)入所有的Python庫(本地已經(jīng)安裝的)。
GitHub地址:https://github.com/8080labs/pyforest
01 介紹
Python因為有著成千上萬個功能強(qiáng)大的開源庫,備受大家的歡迎。
目前,通過PyPl可以導(dǎo)入超過23.5萬個Python庫,數(shù)量龐大。
在大家平常的實(shí)踐當(dāng)中,一般都是需要導(dǎo)入多個庫或者框架來執(zhí)行任務(wù)。
而且每當(dāng)新建一個程序文件時,都需要根據(jù)自己的需求導(dǎo)入相關(guān)的庫。
如果是相同類型的任務(wù),比如想做一個數(shù)據(jù)可視化的小項目,可能會一直使用到某個庫。
如此,反復(fù)編寫同一條import語句,就算是復(fù)制粘貼,也會感覺到麻煩,這時Pyforest庫就可以上場了。
Pyforest是一個開源的Python庫,可以自動導(dǎo)入代碼中使用到的Python庫。
在進(jìn)行數(shù)據(jù)可視化的時候,一般都需要導(dǎo)入多個庫,比如pandas、numpy、matplotlib等等。
使用了Pyforest,每個程序文件中就不需要導(dǎo)入相同的Python庫,而且也不必使用確切的導(dǎo)入語句。
比如下面這行代碼,就可以省略掉。
- from sklearn.ensemble import RandomForestClassifier
在你使用import語句導(dǎo)入Pyforest庫后,你就可以直接使用所有的Python庫。
- import pyforest
- df = pd.read_csv('test.csv')
- print(df)
你使用的任何庫都不需要使用import語句導(dǎo)入,Pyforest會為你自動導(dǎo)入。
只有在代碼中調(diào)用庫或創(chuàng)建庫的對象后,才會導(dǎo)入庫。如果一個庫沒有被使用或調(diào)用,Pyforest將不會導(dǎo)入它。
02 使用
安裝,使用以下命令安裝Pyforest。
- pip install pyforest -i https://pypi.tuna.tsinghua.edu.cn/simple
安裝成功后,使用import語句導(dǎo)入它。
現(xiàn)在,你可以直接使用相關(guān)的Python庫,無需編寫import導(dǎo)入。
先以jupiter notebook為例,我們沒有導(dǎo)入pandas、seaborn和matplotlib庫,但是我們可以通過導(dǎo)入Pyforest庫直接使用它們。
讀取數(shù)據(jù),這個是國內(nèi)棉花產(chǎn)量排行前三的省份,新疆全國第一(數(shù)據(jù)來源:國家統(tǒng)計局)。
那么Pyforest可以導(dǎo)入所有庫嗎?
目前這個包包含了大部分流行的Python庫,比如:
- pandas as pd
- NumPy as np
- matplotlob.pyplot as plt
- seaborn as sns
除了這些庫之外,它還提供了一些輔助的Python庫,如os、tqdm、re等。
如果你想查看庫列表,可以使用dir(pyforest)進(jìn)行查看,內(nèi)置的是68個庫。
- import pyforest
- print(len(dir(pyforest)))
- for i in dir(pyforest):
- print(i)
- -------------------------
- 68
- GradientBoostingClassifier
- GradientBoostingRegressor
- LazyImport
- OneHotEncoder
- Path
- RandomForestClassifier
- RandomForestRegressor
- SparkContext
- TSNE
- TfidfVectorizer
- ...
如果沒有的話,可以進(jìn)行自定義添加,在主目錄中的文件寫入import語句。
示例如下。
- vim ~/.pyforest/user_imports.py
添加語句,此處便能在代碼中使用requests這個庫。
- # Add your imports here, line by line
- # e.g
- # import pandas as pd
- # from pathlib import Path
- # import re
- import requests as req
- ~
- ~
- "~/.pyforest/user_imports.py" 7L, 129C
這回我們在PyCharm中來實(shí)驗一下。
發(fā)現(xiàn)PyCharm的自動補(bǔ)全的功能失效了,看來這個庫還是比較適合jupyter notebook(自動補(bǔ)全代碼還可以使用)。
除了上面這個地方可以自定義添加,還可以在庫的_import.py文件中添加。
此處以Pyechars為例,縮寫為chart。
可視化代碼如下:
新疆棉花產(chǎn)量年年上升,其它省份年年下降...
最后Pyforest還提供了一些函數(shù)來了解庫的使用情況。
- # 返回已導(dǎo)入并且正在使用的庫列表
- print(pyforest.active_imports())
- --------------------------------
- ['import pandas as pd', 'import requests as req', 'import pyg2plot']
- # 返回pyforest中所有Python庫的列表
- print(pyforest.lazy_imports())
- --------------------------------
- ['import glob', 'import numpy as np', 'import matplotlib.pyplot as plt'...]
只有代碼中有使用到的庫,程序才會import進(jìn)去,否則不會導(dǎo)入的哦!
03 總結(jié)
好了,到此本期的分享就結(jié)束了。
使用Pyforest庫有時候確實(shí)是可以節(jié)省一些時間,不過也是有弊端存在的。
比如調(diào)試的時候(大型項目),可能會很痛苦,不知道是哪里來的庫。
所以建議大家,在一些獨(dú)立的腳本程序中使用,效果應(yīng)該還是不錯的。