如何找到適合需求的 Python 庫?


這是個很好的問題,Python 的標準庫、第三方庫那麼多,怎麼快速根據一個模糊的需求定位到自己需要的庫呢?

直接答案,就是:Google

-----------------------

下面講講理由吧。

awesome-python 系列確實大都是 Python 開源世界的精品,但是這樣一個聚合的列表,乍一看都知道了,卻很難在需要使用的時候快速定位上去。其實,awesome-python 系列可以作為你平時積累和學習的目錄,但是,在要快速找到一個輪子造車的時候,還是 Google 更好用了。

比如,你想要用 Python 比較文本相似度,可以在 Google 搜索關鍵詞「Python string similarity」。記住,搜索的時候用空格分隔幾個關鍵詞,不要寫一句完整的話來做搜索。

在 Google 得到如下結果:

前三個答案的結果分別是 difflib(1, 3) 、FuzzyWuzzy (2),在第二個答案中,有這樣一句話:

The library is called 「Fuzzywuzzy」, the code is pure python, and it depends only on the (excellent) difflib python library.

已知 difflib 是 Python 標準庫的成員, FuzzyWuzzy 基於 difflib。於是,我們可以嘗試使用 FuzzyWuzzy 來完成文本相似度的比較。

---------------------

再舉個例子吧,比如要用 Python 解析 Markdown,那麼,搜索關鍵詞「Python Markdown to html」,結果如下:

分別帶我們去到了 Pypi 和 GitHub 上。簡單嘗試之後,就可以選擇自己滿意的一個庫進行使用了。

-------------------

除了第三方庫, Python 標準庫也可以通過這樣的方式快速定位。比如要在 Python 程序中記錄日誌,這樣的功能肯定是有官方實現的,在 Google 中搜索「Python standard library logging」,結果如下:

分別是不同版本的官方文檔,裡面有詳細的示例代碼可以參考。

-------------------------

除此之外,Python 官方文檔中有一個「Python HOWTOs」系列,強烈建議每個 Python 開發者都認真學習一遍要是你有足夠的時間或者你有足夠的熱情,通讀一次官方文檔(https://docs.python.org/2/)當然是最好不過的了,尤其是「 The Python Standard Library 」這部分。

-------------------------

個人認為,通過 Google 搜索技術問題,最好的方式就是提到點上,不要長篇大論,不要使用問句句式,將問題歸結為幾個關鍵詞再搜索,往往可以在較短時間裡得到滿意的回答。這不只限於 Python 常用庫的搜索,也包括其它技術問題、其它語言甚至其它非技術問題,這樣的搜索往往會更快得到你需要的。


第一推薦當然是awesome-python,無法正常瀏覽Gayhub的知友可以查看這篇答案:

Python實現演算法和設計模式

algorithms- Python的一個演算法模塊

PyPattyrn- 一個用於實現常見設計模式的簡單而有效的庫

python-patterns- Python中設計模式的集合

sortedcontainers- 快速,純Python的SortedList,SortedDict和SortedSet類型的實現

從源代碼編譯軟體

BitBake - 一個嵌入Linux的類似make的構建工具

buildout- 用於從多個部分創建、組裝和部署應用程序的構建系統

PlatformIO- 對不同開發平台的代碼進行構建的控制台工具

PyBuilder- 用不同開發平台構建代碼的控制台工具

SCons - 軟體構建工具

用於分析、解析和操作代碼的庫和工具

coala - 語言獨立、易於擴展的代碼分析應用程序

code2flow- 將你的Python和JavaScript代碼轉換為DOT流程圖

pycallgraph- 可視化你的Python應用程序的流程(調用圖)的庫

pysonar2- Python的類型參考和索引器

從Python 2遷移到3的庫

Python-Future - Python 2和Python 3之間缺少的兼容性層

Python-Modernize- 使Python代碼現代化,實現最終的Python 3遷移

Six - Python 2和3兼容性實用程序

用於並發和並行執行的庫

eventlet - 具有WSGI支持的非同步框架

gevent - 基於協同程序的Python網路庫

multiprocessing- Python標準庫————基於流程的「線程」介面

threading- (Python標準庫)高級線程介面

Tomorrow- 非同步代碼的魔術裝飾器語法

uvloop- uvloop是對內置的asyncio事件循環的一個快速、簡單的替換。uvloop在Cython中實現,並使用libuv

用於驗證數據的庫。在許多情況下用於表格

Cerberus- 輕量級和可擴展的數據驗證庫

colander - 通過XML、JSON、HTML表單文檔獲取和反序列化數據

jsonschema- Python 的JSON Schema的實現

schema- 用於驗證Python數據結構的庫

Schematics- 數據結構驗證

valideer- 輕量級可擴展數據驗證和適應庫

voluptuous- 一個Python數據驗證庫

用於連接和操作資料庫的庫

MySQL

mysql-python - 用於Python的MySQL資料庫連接器

mysqlclient - mysql-python fork支持Python 3

oursql- 一個更好的MySQL連接器

PyMySQL - 純Python MySQL驅動程序兼容於mysql-python

PostgreSQL

psycopg2- 最流行的適用於Python的PostgreSQL適配器

queries- 用於與PostgreSQL交互的psycopg2庫的包裝器

txpostgres - 用於PostgreSQL的基於Twisted的非同步驅動程序

其他關係型資料庫

apsw - 另一個Python SQLite包裝器

· dataset- 將Python腳本存儲在資料庫中 - 與SQLite,MySQL和PostgreSQL一起使用

pymssql - Microsoft SQL Server的簡單資料庫介面

非關係型資料庫

cassandra-python-driver - Cassandra的Python驅動程序

HappyBase - 個開發人員友好的Apache HBase庫

Plyvel - 一個快速和功能豐富的Python介面到LevelDB

py2neo- 適用於Neo4j 靜態界面的 Python包裝客戶端

pycassa - Cassandra的 Python Thrift驅動

PyMongo- MongoDB的官方Python客戶端

redis-py - Redis Python客戶端

telephus - Cassandra的基於Twisted的客戶端

txRedis - Redis的基於Twisted的客戶端

用於生成項目文檔的庫

Sphinx- Python文檔生成器

MkDocs - Markdown友好的文檔生成器

pdoc- Epydoc替換為Python庫自動生成API文檔

Pycco- 識字編程式文檔生成器

電子商務和付款框架的庫

alipay - 非官方的Alipay API for Python

Cartridge- Cartridge是使用Django 框架構建的購物車應用程序

django-oscar - Django的開源電子商務框架

django-shop- 一個基於Django的商店系統

merchant- 一個Django應用程序接受來自各種支付處理器的付款.

money - 具有可選CLDR支持的區域設置和可擴展的貨幣兌換解決方案的

python-currencies- 顯示世界各國貨幣格式的Python包

forex-python- 外匯匯率,比特幣價格指數和貨幣兌換

shoop - 基於Django的開源電子商務平台

Python版本和環境管理庫

Pipenv- Pipfile,Pip和Virtualenv的組合

p -互動式Python版本管理

pyenv -簡單的Python版本管理

venv -Python 3.3+中的 Python標準庫)創建輕量級的虛擬環境

virtualenv- 創建孤立的Python環境的工具

virtualenvwrapper- 一組對virtualenv的擴展

地理編碼地圖和緯度和經度的庫

django-countries- 提供用於表單選擇的Django應用程序,可以標誌圖標靜態文件和模型的國家/地區欄位

GeoDjango- 世界級的地理網路框架

GeoIP- 用於MaxMind GeoIP遺留資料庫的Python API

geojson- GeoJSON的Python綁定和實用程序

geopy - Python地理編碼工具箱

pygeoip-純Python GeoIP API

使用HTML和XML的庫

BeautifulSoup- Beautiful Soup提供一些簡單的、python式的函數用來處理導航、搜索、修改分析樹等功能。它是一個工具箱,通過解析文檔為用戶提供需要抓取的數據,因為簡單,所以不需要多少代碼就可以寫出一個完整的應用程序

bleach- 理HTML(需要html5lib)

cssutils- 個用於Python的CSS庫

html5lib- 根據WHATWG規範生成HTML/ XML文檔的DOM。該規範被用在現在所有的瀏覽器上

lxml - 一個用於處理HTML和XML的非常快速、易於使用和通用的庫

MarkupSafe- 為Python編寫XML / HTML / XHTML標記安全字元串

pyquery - 解析DOM樹和jQuery選擇器

untangle- 輕鬆實現將XML文件轉換為Python對象

WeasyPrint - 可以導出為PDF的HTML和CSS的視覺呈現引擎

xmldataset- 簡單的XML解析

xmltodict- 使用XML感覺就像使用JSON一樣

用於生成和使用日誌的庫

Eliot- 複雜和分散式系統的日誌記錄

logbook- Logging replacement for Python

logging- (Python standard library) Logging facility for Python

Sentry- A realtime logging and aggregation server

一種基於LibLinear和Jieba的簡單,高效的短文分類工具

pip - Python包和依賴關係管理器

conda - Conda是一個開源軟體包管理系統和環境管理系統,用於安裝多個版本的軟體包及其依賴關係,並在它們之間輕鬆切換。它適用於Linux,OS X和Windows,並且是為Python程序創建的,但可以打包和分發任何軟體

Curdling - Curdling是用於管理Python包的命令行工具

pip-tools- 能夠保證你Python依賴為最新的一組工具

wheel - 新的Python分發標準,旨在取代egg

用於解析和操縱特定文本格式的庫

General

tablib - 處理XLS,CSV,JSON,YAML中的表格數據集的模塊

Office

Marmir- 使用Python數據結構並將其轉換成電子表格

openpyxl- 用於讀寫Excel 2010 xlsx / xlsm / xltx / xltm文件的庫

pyexcel - 提供一個用於讀取,操作和編寫csv、ods、xls、xlsx和xlsm文件的APIs

python-docx - 讀取、查詢和修改Microsoft Word 2007/2008 docx文件

relatorio- 模板OpenDocument文件

unoconv - 轉換LibreOffice / OpenOffice支持的任何文檔格式

XlsxWriter - 用於創建Excel

xlsx文件的Python模塊

xlwings- 一個BSD許可的庫,可以輕鬆地從Excel調用Python,反之亦然

xlwt / xlrd - 從Excel文件中寫入和讀取數據和格式化信息

PDF

PDFMiner - 從PDF文檔中提取信息的工具

PyPDF2 - 能夠分割、合併和轉換PDF頁面的庫

ReportLab - 允許快速創建豐富的PDF文檔

Markdown

Mistune - 快速、功能齊全的純文本解析器

Python-Markdown - John Gruber的Markdown的Python實現

YAML

PyYAML- Python的PyYAML - YAML實現

CSV

csvkit - 用於轉換和使用CSV的工具

Archive

unp -一個可以輕鬆解壓存檔的命令行工具

全棧式web框架

Bottle- 快速、簡單和輕量級的WSGI微網框架

CherryPy - 一個簡約的Python Web框架,HTTP / 1.1兼容和WSGI線程池

Django - Python中最流行的Web框架

Flask - 一個 Python 微型框架

Pyramid - 一個小而快速的,開放源碼的Python Web框架

Sanic- 寫得快的Web伺服器

Tornado- 個Web框架和非同步網路庫

TurboGears - 擁有可擴展到完整堆棧解決方案的微型功能

Web2py - 用於安全資料庫驅動的基於Web的應用程序的全棧企業框架

用於構建命令行應用程序的庫

asciimatics- 跨平台的全屏終端軟體包(即滑鼠/鍵盤輸入和彩色定位的文本輸出),具有複雜動畫和特效的高級API

cement - Python的CLI應用程序框架

click - 用組合的方式創建美觀的命令行界面的包

cliff- 用多層次命令創建命令行程序的框架

clint- Python命令行應用工具

colorama- 跨平台彩色終端文本

docopt - Pythonic命令行參數解析器

Gooey- 將命令行程序轉換成一行完整的GUI應用程序

Python-Fire- 用於從任何Python對象創建命令行界面(CLI)的庫

python-prompt-toolkit- 用於構建強大的互動式命令行的庫

aws-cli - Amazon Web Services的通用命令行界面

bashplotlib- 在終端中製作基本圖

caniusepython3- 確定哪些項目阻止你移植到Python 3

cookiecutter- 從cookiecuters(項目模板)創建項目的命令行實用程序

doitlive- 終端中現場演示的工具

howdoi - 通過命令行即時編碼

httpie - 命令行HTTP客戶端,是一個用戶友好的cURL替換工具

mycli - 具有自動完成和語法突出顯示的MySQL的終端客戶端

PathPicker- 從bash輸出選擇文件

percol - percol在UNIX上為傳統的管道概念增添了互動式選擇的風格

pgcli - 具有自動完成和語法高亮的Postgres CLI

SAWS- 增加的AWS命令行界面(CLI)

thefuck - 更正你之前的控制台命令

try -令人敬畏的cli工具

在Python中實現的資料庫

pickleDB- 一個用於Python的簡單輕便的鍵值存儲

PipelineDB - 流式SQL資料庫,一個開源關係資料庫,可以連續地在流上運行SQL查詢,並將結果逐個存儲在表中

TinyDB- 一個微小的、面向文檔的資料庫

ZODB - Python的本機對象資料庫

處理日期和時間的庫

arrow- Python功能強大的日期和時間庫

Chronyk-用於解析人為時間和日期的Python 3庫

dateutil- 擴展到標準的Python datetime模塊

delorean- Delorean建立在pytz和dateutil之上,Delorean將為處理時間提供自然語言改進,並提供易於使用的日期時間抽象

moment- 處理日期/時間的Python庫。靈感來自Moment.js

Pendulum- Python datetimes變得容易

PyTime - 一個易於使用的Python模塊,旨在通過字元串操作日期/時間/日期時間

pytz - 處理時區的一個庫

when.py - 提供用戶友好的功能來幫助執行常見的日期和時間操作

神經網路和深度學習框架

Caffe - 深度學習的一個快速上手開放框架

Keras- 一個高級神經網路庫,能夠運行在TensorFlow或者Theano之上

MXNet - 一個旨在提高效率和靈活性的深度學習框架

Neupy - 運行和測試不同的人工神經網路演算法

Pytorch - 具有強大GPU加速度的Python中的Tensors和動態神經網路

TensorFlow- 由Google創建的最受歡迎的深度學習框架

Theano - 快速數值計算的深度學習庫

編輯器插件和IDE

Emacs

Elpy - Emacs Python開發環境

Sublime Text

Anaconda - Anaconda將您的Sublime Text 3轉換為全功能的Python開發IDE

SublimeJEDI - SublimeJEDI是一個Sublime Text 2和Sublime Text 3的插件

Vim

Jedi-vim - 用於Python的Jedi自動完成庫的Vim綁定

Python-mode - 一個將Vim轉換成Python IDE的插件

YouCompleteMe - 包括基於Jedi的Python完成引擎

Visual Studio

PTVS - Visual Studio的Python工具

Visual Studio Code

Python - 具有豐富的Python語言支持的擴展,其中包括linting,IntelliSense,格式化,重構,調試,單元測試和jupyter支持

Magic Python -Sublime Text,Atom和Visual Studio代碼的前沿Python語法熒光筆。由GitHub用來突出顯示你的Python代碼!

IDE

LiClipse- 基於Eclipse的免費polyglot IDE。使用PyDev支持Python

PyCharm - JetBrains的商業Python IDE。有免費社區版可用

Spyder - 開源Python IDE

遊戲開發庫

Cocos2d - Cocos2d是構建2D遊戲,演示和其他圖形/交互應用程序的框架。它是基於pyglet

Panda3D - 迪斯尼開發和卡內基梅隆大學娛樂技術中心保持的3D遊戲引擎。用C ++編寫,完全包含在Python中

Pygame - Pygame是一組用於編寫遊戲的Python模塊

PyOgre- Ogre 3D渲染引擎的Python綁定,可用於遊戲、模擬、任何3D

PyOpenGL - 用於OpenGL的Python ctypes綁定及其相關API

PySDL2 - SDL2庫的基於ctypes的包裝器

RenPy - 視覺新穎引擎

與硬體相關的庫

ino - 與Arduino合作的命令行工具包

Pingo - Pingo提供統一的API來編程像Raspberry Pi、pcDuino、Intel Galileo等設備

Pyro - Python機器人

PyUserInput- 用於跨平台控制滑鼠和鍵盤的模塊

scapy - Scapy是一個可以讓用戶發送、偵聽和解析並偽裝網路報文的Python程序。這些功能可以用於製作偵測、掃描和攻擊網路的工具

wifi- 在Linux上使用WiFi的Python庫和命令行工具

互動式Python解釋器(REPL)

bpython- 強大的互動式Python終端

Jupyter Notebook (IPython)- 一個豐富的工具包,可幫助您充分利用互動式使用Python

ptpython- 高級Python REPL構建在python-prompt-toolkit之上

機器學習相關的資源庫

gensim- Gensim是用於主題建模、文檔索引 和大型語料庫的相似檢索的Python庫

Metrics - 一個Python實現的一些流行的推薦演算法

NuPIC - Apache Spark的可擴展機器學習庫

scikit-learn - 機器學習最流行的Python庫

Spark ML- 是一個Python scikit構建和分析推薦系統

vowpal_porpoise- 一個輕量級的Python包裝的Vowpal Wabbit

xgboost - 可擴展、攜帶型和分散式梯度提升(GBDT,GBRT或GBM)庫,適用於Python、R、Java、Scala、C ++等。

科學計算的庫

astropy - 一個用於天文學的社區Python庫

bcbio-nextgen- 其目標是克服在快速變化的研究領域工作在複雜管道上的個體開發人員的生物、演算法和計算挑戰

bccb - 生物分析的庫

Biopython- Biopython是一套免費提供的生物計算工具

cclib - 用於解析和解釋計算化學包的結果的庫

NetworkX - 複雜社會網路研究的Python庫

NIPY - 神經成像工具包的集合

NumPy - 用Python進行科學計算的基礎軟體包

Open Babel - 一種化學工具箱,旨在呈現多種語言的化學數據

ObsPy - 地震學的Python工具箱

PyDy - Python Dynamics的縮寫,用於協助動態運動建模中的工作流程

PyMC- Python Dynamics的縮寫,用於協助動態運動建模中的工作流程

RDKit - 化學信息學和機器學習軟體

SciPy - SciPy是另一種使用NumPy來做高等數學、信號處理、優化、統計和許多其它科學任務的語言擴展

statsmodels- Python中的統計建模和計量經濟學

SymPy - Python中的統計建模和計量經濟學

Zipline- 一個Pythonic演算法交易庫

BigQuant - 首個人工智慧量化投資平台,可直接使用機器學習、深度學習技術開發量化策略

網路站點爬取的庫

cola- 一個分散式爬蟲框架

Demiurge- 基於PyQuery 的爬蟲微型框架

feedparser- 通用 feed 解析器

Grab - 站點爬取框架

MechanicalSoup- 用於自動和網路站點交互的 Python 庫

portia- Scrapy 可視化爬取

pyspider- 一個強大的爬蟲系統

RoboBrowser- A simple, Pythonic library for browsing the web without a standalone web browser

Scrapy - 一個簡單的Python 風格的庫,用來瀏覽網站,而不需要一個獨立安裝的瀏覽器

代碼質量

Codacy - 自動代碼審查,以更快的速度運送更好的代碼。免費開源

Codecov - 代碼覆蓋儀錶板

Landscape - 託管連續的Python代碼指標

QuantifiedCode - 數據驅動、自動化、連續的代碼審查工具

用於緩存數據的庫

Beaker- 用於web應用和獨立python腳本使用的緩存庫

DiskCache- SQLite和文件支持的緩存後端,具有比memcached和redis更快的查找功能

django-cache-machine - Django模型的自動緩存

django-cacheops - 支持自動或手動查詢緩存,並且具有自動粒度事件驅動的ORM緩存

django-viewlet - 使用擴展的緩存來控制渲染的模板部分

dogpile

cache - dogpile.cache是一個緩存API,它提供了一個通用介面來緩存任何種類的後端

HermesCache- 具有基於標籤的無效和預防效果的Python緩存庫

johnny-cache- django應用程序的緩存框架

pylibmc- 圍繞libmemcached介面的Python包裝器

計算機視覺相關的庫

OpenCV - 比較知名的計算機視覺的庫

pyocr - Tesseract和Cuneiform的包裝

pytesseract- Google Tesseract OCR的另一個包裝

SimpleCV - 構建計算機視覺應用程序的開源框架

加密

cryptography- 一個旨在向Python開發人員提供加密演算法的軟體包

hashids- 在Python 中實現hashids(Hashids),兼容Python 2和Python 3

Paramiko - 實現SSHv2協議的Python(2.6 +,3.3+),提供客戶端和伺服器功能

Passlib- 安全的密碼存儲/哈希庫,非常高的安全級別

PyNacl - Python綁定到網路和加密(NaCl)庫

數據分析包

Blaze - NumPy和Pandas與Big data介面

Open Mining - 面向Pandas的商業智能(BI)界面

Orange - 通過視覺編程或腳本進行數據挖掘、數據可視化、分析和機器學習

Pandas - 量化領域數據分析最常用的一個包

用於可視化數據的庫

Altair- 使用Altair,您可以花費更多時間了解您的數據及其含義。Altair的API簡單,友好和一致,建立在強大的 Vega-Lite JSON規範之上。這種優雅的簡潔性以最少的代碼產生了美麗而有效的可視化

Bokeh - Python的互動式網路繪圖

ggplot - 與ggplot2相同的API

Matplotlib - 一個Python 2D繪圖庫

Pygal - 一個Python SVG圖表創建者

PyGraphviz- Graphviz的 Python介面

PyQtGraph - 互動式和實時2D / 3D /圖像繪圖和科學/工程小部件

Seaborn- 使用Matplotlib的統計數據可視化

VisPy - 基於OpenGL的高性能科學可視化

代碼調試工具的包

類似於pdb的調試器

ipdb - 啟用了IPython的pdb

pdb++ - pdb的另一個替代品

pudb - 一個全屏幕的基於控制台的Python調試器

remote-pdb - 遠程vanilla PDB調試器(通過TCP sockets)

wdb -通過WebSockets的Web調試器

Profiler性能分析器

line_profiler - 逐行剖析

memory_profiler - 監視Python代碼的內存使用情況

profiling - 個互動式Python分析器

vprof- Visual Python分析器

其他

django-debug-toolbar - 顯示Django的各種調試信息

django-devserver - Django的runserver的替代品

flask-debugtoolbar - django-debug工具欄的一個埠

hunter - 一個靈活的代碼跟蹤工具包

lptrace - strace for Python程序

manhole - 調試服務,將接受unix域套接字連接,並顯示所有線程的堆棧跟蹤和互動式提示

pyelftools - 解析和分析ELF文件和DWARF調試信息

pyringe - 調試器能夠附加和注入代碼到Python進程

下載方面的庫

s3cmd - 用於管理Amazon S3和CloudFront的命令行工具

s4cmd- 超級S3命令行工具,有利於更高的性能

you-get -一個用Python 3編寫的YouTube /優酷/ Niconico視頻下載

youtube-dl - 從YouTube下載視頻的小型命令行程序

用於發送和解析郵件的庫

envelopes- 發送郵件的庫

flanker- 用於發送和解析郵件的庫

imbox- 用於人類的Python IMAP.

py - 用於人類的Python SMTP伺服器

lamson- Pythonic SMTP應用伺服器

Marrow Mailer - 高性能可擴展郵件傳遞框架

modoboa-郵件託管和管理平台,包括現代和簡化的Web UI

Nylas Sync Engine -在功能強大的電子郵件同步平台之上提供RESTful API

yagmail- 另一個Gmail / SMTP客戶端

用於使用圖形用戶界面應用程序的庫

curses - 用於創建終端GUI應用程序的ncurses的內置包裝器

enaml - 使用聲明式語法(如QML)創建漂亮的用戶界面

Flexx - Flexx是一個純Python工具包,用於創建GUI,它使用Web技術進行渲染

kivy - 用於創建在Windows,Linux,Mac OS X,Android和iOS上運行的NUI應用程序的庫

pyglet- 一個用於Python的跨平台窗口和多媒體庫

PyGObject- 用於GLib / GObject / GIO / GTK +(GTK + 3)的Python綁定

PyQt- 用於Qt跨平台應用程序和UI框架的Python綁定,支持Qt v4和Qt v5框架

PySide - 用於Qt跨平台應用程序和UI框架的Python綁定,支持Qt v4框架

pywebview- 圍繞Webview組件的輕量級跨平台本機包裝,允許在自己的本機專用窗口中顯示HTML內容

Tkinter- Tkinter是Python的事實上的標準GUI包

Toga - 一個Python本機的OS本機GUI工具包

urwid - 用於創建終端GUI應用程序的庫,具有對窗口小部件、事件、豐富顏色等的強大支持

wxPython - wxWidgets C ++類庫與Python的混合

處理圖像的庫

hmap- 圖像直方圖的庫

imgSeek- 使用視覺相似性搜索圖像集合的項目

nude.py - 色情圖片識別的庫

pagan - 基於輸入字元串和散列的復古識別(Avatar)生成

pillow- Pillow由PIL而來,是一個圖像處理庫

pyBarcode- 在Python中創建條形碼而不需要PIL

pygram- 像Instagram的圖像過濾器

python-qrcode- 一個純Python QR碼生成器

Quads- 基於四叉樹的計算機藝術

scikit-image - 用於(科學)圖像處理的Python庫

thumbor- 一個小型圖像服務,具有剪裁,尺寸重設和翻轉功能

wand - MagickWand的 Python綁定,ImageMagick的 C API

人類語言處理的庫

Jieba - 中文分詞包

langid.py - 獨立語言識別系統

NLTK - 構建Python程序以處理人類語言數據的領先平台

Pattern- Python的Web挖掘模塊

SnowNLP- 用於處理中文文本的庫

spaCy - spaCy擅長大規模的信息提取任務

TextBlob- 具有文本處理 、 情緒分析、詞性標註、名詞短語提取、翻譯等功能的一個庫

TextGrocery- 一種基於LibLinear和Jieba的簡單、高效的短文分類工具

Microsoft Windows上的Python編程

Python(x,y) - 基於Qt和Spyder的基於科學應用的Python分發

pythonlibs- 用於Python擴展程序包的非官方Windows二進位文件

PythonNet- 與NET公共語言運行時(CLR)的Python集成

PyWin32- 適用於Windows的Python擴展

WinPython - 適用於Windows 7/8的攜帶型開發環境

用於操縱視頻和GIF的庫

moviepy - 用於基於腳本的電影編輯的模塊,包括動畫GIF等多種格式

scikit-video- SciPy的視頻處理模塊

用來操作音頻的庫

audiolazy-Python 的數字信號處理包

audioread – 交叉庫 (GStreamer + Core Audio + MAD + FFmpeg)音頻解碼

beets– 一個音樂庫管理工具及 MusicBrainz 標籤添加工具

dejavu – 音頻指紋提取和識別

django-elastic-transcoder– Django + Amazon Elastic Transcoder

eyeD3 – 一個用來操作音頻文件的工具,具體來講就是包含 ID3 元信息的 MP3 文件

id3reader– 一個用來讀取 MP3 元數據的 Python 模塊

m3u8 – 一個用來解析 m3u8 文件的模塊。

mutagen– 一個用來處理音頻元數據的 Python 模塊

pydub– 通過簡單、簡潔的高層介面來操作音頻文件

pyechonest– Echo Nest API 的 Python 客戶端

talkbox– 一個用來處理演講/信號的 Python 庫

TimeSide– 開源 web 音頻處理框架

tinytag– 一個用來讀取MP3, OGG, FLAC 以及 Wave 文件音樂元數據的庫

mingus– 一個高級音樂理論和曲譜包,支持 MIDI 文件和回放功能


你想更深入了解學習Python知識體系,你可以看一下我們花費了一個多月整理了上百小時的幾百個知識點體系內容:

【超全整理】《Python自動化全能開發從入門到精通》筆記全放送


這個挺複雜的。如果你能讓軟體固定位置不動。可以使用pyhook,其中有一個按滑鼠按鍵的功能。通常可以用來做遊戲的自動工具。

如果再想進一步,需要分析你的程序是什麼做的。如果是WEB APP,需要知道它用什麼瀏覽器內核,也調用相應的插件點擊。 如果是傳統WNDOWS程序,可以使用win32 api,通過獲得窗口句柄 ,並通過迭代查詢找到控制項的句柄,最後用發送消息,獲取消息的辦法來控制它

其實python非常適合初學者入門。相比較其他不少主流編程語言,有更好的可讀性,因此上手相對容易。自帶的各種模塊加上豐富的第三方模塊,免去了很多「重複造輪子」的工作,可以更快地寫出東西。配置開發環境也不是很複雜,mac和linux都內置了python。另外據我所知,不少學校也開始使用python來教授程序設計課程(比如本人的母校)。
我就是完全通過網上資源自學python的。
從在校時候用python接活賺零花錢,到在創業公司用python開發商業網站和遊戲後台。所有遇到的問題,幾乎都可以從互聯網上的公開資源找到答案。
關於自學python,個人最大的3點經驗:
找一本淺顯易懂,常式比較好的教程,從頭到尾看下去。不要看很多本,專註於一本。把裡面的常式都手打一遍,搞懂為什麼。我當時看的是《簡明python教程》,不過這本書不是非常適合零基礎初學者。
去找一個實際項目練手。我當時是因為要做一個網站,不得已要學python。這種條件下的效果比你平時學一門新語言要好很多。所以最好是要有真實的項目做。可以找幾個同學一起做個網站之類。注意,真實項目不一定非要是商業項目,你寫一個只是自己會用的博客網站也是真實項目,關鍵是要核心功能完整。
最好能找到一個已經會python的人。問他一點學習規劃的建議(上知乎也是個途徑),然後在遇到卡殼的地方找他指點。這樣會事半功倍。但是,要學會搜索,學會如何更好地提問。沒人願意幫你寫作業或是回答「一搜便知」的問題。

然而,別人的經驗未必能完全複製。比如我沒有說的是,在自學python之前,我已在學校系統學習過其他的編程語言。
對於完全沒有編程經驗的初學者,在學習python的時候,面對的不僅僅是python這門語言,還需要面臨「編程」的一些普遍問題,比如:
從零開始,不知道從何入手,找了本編程教材發現第二章開始就看不懂了
缺少計算機基礎知識,被一些教程略過的「常識性」問題卡住
遇到問題不知道怎麼尋找解決方案
看懂語法之後不知道拿來做什麼,學完一陣子就又忘了
缺少數據結構、設計模式等編程基礎知識,只能寫出小的程序片段
所以除了前面說的3點經驗,給初學編程者的額外建議:
首先要有信心。雖然可能你看了幾個小時也沒在屏幕上打出一個三角形,或者壓根兒就沒能把程序運行起來。但相信我,幾乎所有程序員一開始都是這麼折騰過來的。
選擇合適的教程。有些書很經典,但未必適合你,可能你寫了上萬行代碼之後再看它會比較好。
寫代碼,然後寫更多的代碼。光看教程,編不出程序。從書上的常式開始寫,再寫小程序片段,然後寫完整的項目。
除了學習編程語言,也兼顧補一點計算機基礎,和英語。
不但要學寫代碼,還要學會看代碼,更要會調試代碼。讀懂你自己程序的報錯信息。再去找些github上的程序,讀懂別人的代碼。
學會查官方文檔,用好搜索引擎和開發者社區。

另外還有一類程序,比如flash之類的。用這些方法都不成了。因為它內部的代碼不公開。如果一定要進一步研發。可以試著反編譯出action script。然後想辦法替換其中的邏輯。再使用java script去控制其中的邏輯,實現自動化處理。
自己多問下為什麼學python
如果一門語言沒有改變你的編程思維,那麼它不值得你去學習」。如果這麼說,我們大學的時候,學習了c,c++,java,C#,算是值得學習么?很多時候是不值得,我覺得我們大學的課程就是用java,c#,c++把"C程序設計"又上了一遍.
這是因為,學校的老師會C和java之類的,所以要跟著規矩開這門課,(這也就是為什麼,許多學校還在教vb,),這也就是為什麼,你所以為的一樣就是大家都有For都有while,都有switch..都有Class...都有int 都有float,所謂的不一樣就是用C有指針,java沒有,這就是為什麼教育是失敗的,這也就是為什麼,我目前認識的幾個編程大牛
python的優點:簡單 我所說的簡單,是相比於象C和C++這樣的語言,你為了編程,要學習許多偏底層的東西.在比如,你在學習一個新的編程範式,或者想要馬上做個例子看看,試驗某個API,如果你是寫java的,你不得不去寫一個main,寫一些構造,即使有IDE這樣的東西,能夠為你帶來代碼生成器,而我做得就是寫一段「腳本」,或者打開python互動式解釋器就行了。
自己認識的python朋友出去工作,工資比較高,然後自己又剛剛好是會python所以選擇學習python,這樣的人比較危險但是也比較有激勵,還有就是覺得python比其他開發語言好用。

學完python前景會咋樣
其實我個人是很看好python未來的就業前景的,因為我認識太多的工程師都已經在學python,很多都是月收入大幾萬的
我個人也並非一直用python。前些年主要用c/c++以及java開發一些通信,移動系統,互聯網通信。近3年開始才轉向python。坦白的說,這可能與你相處的公司以及環境不大一樣。隨便舉個例子,google的protocol buffer協議一出來就具有c++/python/java三種語言支持。google的廣告系統早在03,04年左右就一併對python進行了webservice支持,大部分涉及基礎核心系統的公司,都開始對python進行了擴展支持。甚至開源社區的postgresql資料庫,除了自身的ansi SQL,pgsql,pg/TCL,PG/PERL之外對python進行了內嵌支持,唯獨卻沒有呼聲很高的java。在FREEBSD(MIT)/LINUX(GPL)平台上,對java可能排斥性比較大,但綜合而言,目前python發展還沒有java那種普及,主要是python大部分工作仍然是在較為深入地系統層和框架層做設計開發,例如django,SQLAlchemy,fail2ban,mail郵件系統,twisted等等。這部分對於那種習慣應用前輩們框架的編碼人員而言,缺乏創造力的他們根本無法適用這種開發。尤其在python涉及一些系統層面需要有較強的c/c++能力,這部分人在國內要麼就累得要死沒時間,要麼就啥都不會就會拷貝代碼,而國內公司也鮮有主動去做這部分基礎勞動的,大多都是等別人做好了在直接拿來用,所以造就了任何技術性的東西出來,國內都是先等等看,然後抄襲應用。
大環境如此,但千萬誤認為先等等看吧。對於一個技術人員而言,缺乏對新技術的渴望與熱情,這是一種非常危險的事情。我工作8年了,按照國內很多的人的說法早已不做代碼了,但又一次在聽一個老外的演講,他說他50多歲仍然每天堅持寫代碼,了解最新的動態,所以他才能做到他們公司的首席科學家,因此它才能時刻指導項目團隊前進並保證項目的質量。他坦言對於一個不寫代碼並且不了解最新的技術動態的技術人員或者技術團隊的負責人而言,這種團隊也就足夠做作小項目,一旦壓力和項目過大,就會有很多問題漏出來。
對於新人而言,無論學習什麼技術,都要以鼓勵的姿態出現。太多用薪水和你個人所看到的現狀去衡量一門技術,那絕對是欠缺眼光的。任何一門技術,一旦有人學習,他有可能逐漸成為這個領域的專家,即便再濫再沒有人用的開發語言技術,他也有可能就是明日的奠基者或者大師。

自己如何確定目標
在生活中學會不斷挖掘自己的潛力。我們都是一個普通人,可能並不清楚自己到底在哪方面佔有優勢。所以,學著在生活中找到自己的優勢,並根據優勢選擇一定的就業方向。
不隨波逐流。不要看周圍的人做什麼,自己就做什麼,也許別人做的並不適合你。別人的優勢很可能會成為你的劣勢。所以,堅定自己的想法,讓自己知道那些方面適合自己,自己可以勝任。
不斷嘗試可能成為自己的優勢。你不知道什麼適合自己,所以才要大膽、勇敢地嘗試。找到一種可以屬於你的獨特的優勢。
堅定信念。一旦你堅定了自己的信念,就不要被別人的意見或是諷刺或是嘲笑所干擾。別人不是你,不懂的你在想什麼,不清楚你開始這件事的源頭。你的事情,不了解你的人,沒有資格輕易評說。
不茫然,不多想。別讓太多的事干擾到你奮鬥下去的信念。夢想不容許太多的雜念。那些雜念只會讓你的心愈來愈脆弱,多為一個人考慮,到頭來,傷害的還是自己。

選擇自己學習方法
每個人都有適合自己的方法,有的人去選擇自學,有的人選擇看視頻學習,有的人選擇報名培訓班,那在這個時候,你就要自己考慮清楚,到底那樣對的幫助是最大的,個人覺得是跟著培訓班最好的,畢竟人家的實戰項目多,我們學軟體開發的都知道實戰項目對於學好一門語言是 很重要的。

學習python有那些誤區

具體裡面的誤區非常的多,那些就不需要我去寫出來,我給你說的一般都是心態的問題,首先一個覺得自己會java和c++,然後我學習python就很牛,但是你要知道語言是有很多相同的地方,但是不是通用,一定要自己學習的仔細。還有一種就是覺得我不會英語,我要先去把英語學習好在來學python。因為自己想還壞主意然後學習,這樣的都是容易找進誤區的。

怎麼樣才能學好python
學好python你需要一個良好的環境,一個優質的開發交流群,群里都是那種相互幫助的人才是可以的,我有建立一個python學習交流群,在群里我們相互幫助,相互關心,相互分享內容,這樣出問題幫助你的人就比較多,群號是304050799,這樣就可以找到大神聚合的群,如果你只願意別人幫助你,不願意分享或者幫助別人,那就請不要加了,你把你會的告訴別人這是一種分享。


一圖勝千言: Awesome Python


上次去 PyCon 聽到的, vinta/awesome-python · GitHub


Python資源大全

PyTab在線手冊中心

上面這兩個可以完全滿足你的需求


@xlzd 說:Google是最直接、最有效的方法,直接Google你需要用Python做的事情,比如「Python string similarity」

假設你無法使用Google的話,我推薦另一個比較常用的方法,在之前的文章中我推薦過一個有關於整理Python資源相關的Github:vinta/awesome-python: A curated list of awesome Python frameworks, libraries, software and resources

在這個項目中,作者把所有的Python資源包括庫資源等分成了幾十個大類:數據挖掘、數據可視化、日期和時間處理、資料庫相關……等等,在每個大類中歸類了該類下的所有資源,並且該資源的首頁有各個大類的索引。

在這個大背景之下,假設我現在想找一個Python操作MongoDB的庫,我們就首先點擊最上面的索引:Database Drivers直接跳轉到資料庫相關庫的地方。

跳轉之後,如下界面,我們就可以直接尋找到我們需要的庫了。

當然,因為所有的資源都在同一個頁面,所以我們同時可以使用瀏覽器自帶的搜索功能,在Chrome下是Ctrl+F12,在該頁面直接搜我們需要的某個功能關鍵詞,比如:MongoDB,

當然,這樣搜索出來的結果可能不僅僅是一條,這樣就需要你自己排查以下哪一個才是你真正那個需要的庫資源了。關於我:路人甲 - 知乎


第一:

查標準庫

The Python Standard Library

第二:用 關鍵詞搜google

例子:

python orm github


needscase site:http://pypi.python.org


Python Module of the Week 每周分享一個庫。另外,Google 基本就夠了


如果是做數據分析的話,這幾個庫是必須的啊: numpy, scikit-learn, pandas等

Top Python libraries for Data Science, Machine Learning

Top 20 python libraries you must know


pip install


Python更新的庫速度極快,普通/高級開發者更是數不勝數,但為了普及,一般都會upload到http://pypi.python.org/,大家的回答都是拋出另一個大海。

但一般而言,我都相信金子會發光,這麼多庫找不到符合自己需求的情況也極少,題主應該是想問找到最好用的吧。

1、經常看一些優秀的Python工程/庫,要知道,一個優秀的Python工程/庫是需要經常維護,並經得起長期使用,也要求它能盡量符合業界普遍認可規範(如pep8),且要高效,甚至高端,一些耳目一新的方式(code style或可視化方式)假如有吸引力,那就等於你發現了「更有用」的庫,我只能說更,因為一般都有類似替代品。

2、Google,stackoverflow,並盡量用英文搜索,國外python比國內火得多。

單純用一些冷門,但是有亮點的庫,我不反對,但畢竟編程,我們不僅經常寫,還會經常讀。

以上。


推薦閱讀:

使用python語言如何保密源代碼以防止逆向工程?
Python 3.x 上 str 與 bytes 轉換函數是什麼?
看完廖雪峰的python,但是感覺自己掌握不紮實,不知道該怎麼做?
用python的前輩們,pylab是matplotlib的一個模塊嗎,跟pyplot又是什麼關係呢?
windows下如何安裝libxml2?

TAG:Python | 編程 | Python3x | Python入門 |