只需一行代碼,就能導(dǎo)入所有的Python庫?
點(diǎn)擊上方Python知識(shí)圈,設(shè)為星標(biāo)
回復(fù)100獲取100題PDF
閱讀文本大概需要 5 分鐘
今天給大家介紹一個(gè)懶人Python庫——Pyforest。
使用一行代碼,就能導(dǎo)入所有的Python庫(本地已經(jīng)安裝的)。
GitHub地址:https://github.com/8080labs/pyforest
/ 01 / 介紹
Python因?yàn)橛兄汕先f個(gè)功能強(qiáng)大的開源庫,備受大家的歡迎。
目前,通過PyPl可以導(dǎo)入超過23.5萬個(gè)Python庫,數(shù)量龐大。
在大家平常的實(shí)踐當(dāng)中,一般都是需要導(dǎo)入多個(gè)庫或者框架來執(zhí)行任務(wù)。
而且每當(dāng)新建一個(gè)程序文件時(shí),都需要根據(jù)自己的需求導(dǎo)入相關(guān)的庫。
如果是相同類型的任務(wù),比如想做一個(gè)數(shù)據(jù)可視化的小項(xiàng)目,可能會(huì)一直使用到某個(gè)庫。
如此,反復(fù)編寫同一條import語句,就算是復(fù)制粘貼,也會(huì)感覺到麻煩,這時(shí)Pyforest庫就可以上場(chǎng)了。
Pyforest是一個(gè)開源的Python庫,可以自動(dòng)導(dǎo)入代碼中使用到的Python庫。
在進(jìn)行數(shù)據(jù)可視化的時(shí)候,一般都需要導(dǎo)入多個(gè)庫,比如pandas、numpy、matplotlib等等。
使用了Pyforest,每個(gè)程序文件中就不需要導(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會(huì)為你自動(dòng)導(dǎo)入。
只有在代碼中調(diào)用庫或創(chuàng)建庫的對(duì)象后,才會(huì)導(dǎo)入庫。如果一個(gè)庫沒有被使用或調(diào)用,Pyforest將不會(huì)導(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ù),這個(gè)是國(guó)內(nèi)棉花產(chǎn)量排行前三的省份,新疆全國(guó)第一(數(shù)據(jù)來源:國(guó)家統(tǒng)計(jì)局)。

那么Pyforest可以導(dǎo)入所有庫嗎?
目前這個(gè)包包含了大部分流行的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個(gè)庫。
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這個(gè)庫。
# 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
這回我們?cè)赑yCharm中來實(shí)驗(yàn)一下。

發(fā)現(xiàn)PyCharm的自動(dòng)補(bǔ)全的功能失效了,看來這個(gè)庫還是比較適合jupyter notebook(自動(dòng)補(bǔ)全代碼還可以使用)。
除了上面這個(gè)地方可以自定義添加,還可以在庫的_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'...]
只有代碼中有使用到的庫,程序才會(huì)import進(jìn)去,否則不會(huì)導(dǎo)入的哦!
/ 03 / 總結(jié)
使用Pyforest庫有時(shí)候確實(shí)是可以節(jié)省一些時(shí)間,不過也是有弊端存在的。
比如調(diào)試的時(shí)候(大型項(xiàng)目),可能會(huì)很痛苦,不知道是哪里來的庫。
所以建議大家,在一些獨(dú)立的腳本程序中使用,效果應(yīng)該還是不錯(cuò)的。
往期推薦 01 02 03
↓點(diǎn)擊閱讀原文查看pk哥原創(chuàng)視頻
我就知道你“在看” 

