标签归档:Python

Fastai – 快速深度学习模块

欢迎光临Fastai

FAST AI使用现代最佳实践简化了快速准确的神经网络训练

正在安装

您可以在不安装的情况下使用Fastai,方法是使用Google Colab事实上,本文档的每一页还可以作为交互式笔记本使用-单击任何页面顶部的“Open in CoLab”将其打开(请确保将Colab运行时更改为“GPU”以使其快速运行!)请参阅上的fast.ai文档Using Colab了解更多信息

只要你运行的是Linux或Windows(不支持Mac),你就可以用conda在你自己的机器上安装Fastai(强烈推荐)。对于Windows,请参阅“在Windows上运行”了解重要说明

如果您使用的是miniconda(推荐)然后运行(请注意,如果您替换conda使用mamba安装过程将更快、更可靠):

conda install -c fastchan fastai

或者如果您正在使用Anaconda然后运行:

conda install -c fastchan fastai anaconda

要使用pip安装,请使用:pip install fastai如果使用pip安装,则应首先按照PyTorch安装PyTorchinstallation instructions

如果您计划自己开发Fastai,或者想要走在前列,您可以使用可编辑安装(如果这样做,您还应该使用的可编辑安装fastcore来配合它。)首先安装PyTorch,然后:

git clone https://github.com/fastai/fastai
pip install -e "fastai[dev]"

学习速度快

开始快速学习(和深度学习)的最好方法是阅读the book,并完成the free course

要了解使用FAST AI可能实现的功能,请查看Quick Start,它展示了如何使用大约5行代码来构建图像分类器、图像分割模型、文本情感模型、推荐系统和表格模型。对于每个应用程序,代码基本相同

通读一下Tutorials学习如何在您自己的数据集上训练您自己的模型。使用导航侧栏浏览FAST AI文档。这里记录了每个类、函数和方法

要了解图书馆的设计和动机,请阅读peer reviewed paper

关于FAST

Fastai是一个深度学习库,它为从业者提供高级组件,这些组件可以快速、轻松地在标准深度学习领域提供最先进的结果,并为研究人员提供可以混合和匹配的低级组件,以建立新的方法。它的目标是在易用性、灵活性或性能方面不做实质性妥协的情况下完成这两件事。这要归功于精心分层的体系结构,该体系结构以分离的抽象方式表达了许多深度学习和数据处理技术的公共底层模式。通过利用底层Python语言的动态性和PyTorch库的灵活性,可以简洁而清晰地表达这些抽象。FAST AI包括:

  • 一种新的Python类型调度系统和张量的语义类型层次结构
  • 一个GPU优化的计算机视觉库,可以在纯Python中扩展
  • 一种优化器,它将现代优化器的常见功能重构为两个基本部分,允许在4-5行代码中实现优化算法
  • 一种新颖的双向回调系统,可以访问数据、模型或优化器的任何部分,并在培训期间随时更改它们
  • 一种全新的数据挡路接口
  • 还有更多

FAST AI围绕两个主要设计目标进行组织:平易近人和快速高效,同时也是深度可破解和可配置的。它构建在提供可组合构建块的低级API层次结构之上。这样,想要重写高级API的一部分或添加特定行为以满足其需求的用户不必学习如何使用最低级别

从其他库迁移

从普通的PyTorch、Ignite或任何其他基于PyTorch的库迁移非常容易,甚至可以将Fastai与其他库结合使用。通常,您将能够使用所有现有的数据处理代码,但将能够减少培训所需的代码量,并更容易地利用现代最佳实践。以下是一些受欢迎的库中的迁移指南,可帮助您上路:

Windows支持

使用安装时mambaconda替换-c fastchan在使用的安装中-c pytorch -c nvidia -c fastai,因为Windows当前不支持Fastchan

由于Jupyter和Windows上的Python多处理问题,num_workersDataloader自动重置为0,以避免Jupyter挂起。这使得Windows上的Jupyter上的计算机视觉等任务比Linux上的要慢很多倍。如果从脚本使用FastAI,则不存在此限制

看见this example要充分利用Windows上的Fastai API,请执行以下操作

测试

要并行运行测试,请启动:

nbdev_test_nbsmake test

要通过所有测试,您需要安装以下可选依赖项:

pip install "sentencepiece<0.1.90" wandb tensorboard albumentations pydicom opencv-python scikit-image pyarrow kornia \
    catalyst captum neptune-cli

测试是使用nbdev,例如,请参阅的文档test_eq

贡献

克隆此存储库后,请运行nbdev_install_git_hooks在你的航站楼里。这将设置git挂钩,它会清理笔记本以删除笔记本中存储的无关内容(例如,您运行了哪些单元格),这会导致不必要的合并冲突。

在提交PR之前,请检查当地图书馆和笔记本是否匹配。剧本nbdev_diff_nbs我可以让你知道当地图书馆和笔记本有什么不同

  • 如果您对其中一个导出的单元格中的笔记本进行了更改,则可以使用以下命令将其导出到库nbdev_build_libmake fastai
  • 如果您对库进行了更改,则可以使用以下命令将其导出回笔记本nbdev_update_lib

码头集装箱

对于那些对这个项目的官方码头集装箱感兴趣的人,可以在here

SpaCy-基于Python语言的💫工业级自然语言处理

Spacy:工业实力NLP

Spacy是一个图书馆,用于高级自然语言处理在Python和Cython中。它建立在最新的研究基础上,从第一天起就被设计用于真正的产品中

Spacy伴随着pretrained pipelines,并且当前支持标记化和培训60多种语言它的特点是最先进的速度和神经网络模型用于标记、解析命名实体识别文本分类更重要的是,通过预先培训实现多任务学习变形金刚像伯特一样,也是一个随时准备生产的training system以及轻松的模型打包、部署和工作流管理。Spacy是在麻省理工学院许可下发布的商业开源软件

💫现在发布3.0版!
Check out the release notes here.

📖文档

文档
⭐️spaCy 101 对Spacy来说是新手吗?这是你需要知道的一切!
📚Usage Guides 如何使用Spacy及其功能
🚀New in v3.0 新功能、向后不兼容性和迁移指南
🪐Project Templates 您可以克隆、修改和运行端到端工作流
🎛API Reference Spacy的API的详细参考资料
📦Models 为Spacy下载经过培训的管道
🌌Universe 来自Spacy生态系统的插件、扩展、演示和书籍
👩‍🏫Online Course 在这个免费的交互式在线课程中学习Spacy
📺Videos 我们的YouTube频道提供视频教程、讲座等
🛠Changelog 更改和版本历史记录
💝Contribute 如何为Spacy项目和代码库做出贡献

💬在哪里提问?

Spacy项目由@honnibal@ines@svlandeg@adrianeboyd@polm请理解,我们将不能通过电子邮件提供个人支持。我们还相信,如果帮助被公开分享,那么它就更有价值,这样更多的人就可以从中受益

类型 站台
🚨错误报告 GitHub Issue Tracker
🎁功能要求和想法 GitHub Discussions
👩‍💻使用问题 GitHub Discussions·Stack Overflow
🗯一般性讨论 GitHub Discussions

功能

  • 支持60多种语言
  • 训练有素的管道对于不同的语言和任务
  • 带预训练的多任务学习变形金刚像伯特一样
  • 对预训人员的支持词向量和嵌入
  • 最先进的速度
  • 生产准备就绪培训系统
  • 语言动机标记化
  • 命名的组件实体识别词性标注、依存关系分析、句子切分文本分类、词汇化、词法分析、实体链接等
  • 通过以下功能轻松扩展自定义组件和属性
  • 支持中的自定义模型PyTorchTensorFlow和其他框架
  • 内置可视化工具对于语法和NER
  • 简单易懂模型包装、部署和工作流管理
  • 稳健、经过严格评估的准确性

📖有关更多详细信息,请参阅facts, figures and benchmarks

⏳安装空间

有关详细的安装说明,请参阅documentation

  • 操作系统:MacOS/OS X·Linux·Windows(Cygwin、MinGW、Visual Studio)
  • Python版本:Python 3.6+(仅64位)
  • 包管理器pip·conda(通过conda-forge)

管道

使用pip,spacy发行版以源码包和二进制轮子的形式可用。在安装Spacy及其依赖项之前,请确保您的pipsetuptoolswheel是最新的

pip install -U pip setuptools wheel
pip install spacy

要安装额外的数据表以进行列举化和规范化,可以运行pip install spacy[lookups]或安装spacy-lookups-data分开的。使用列举化数据创建空白模型需要使用查找包,并需要使用尚未附带预先训练的模型和第三方库支持的语言进行词汇化

使用pip时,一般建议在虚拟环境中安装包,避免修改系统状态:

python -m venv .env
source .env/bin/activate
pip install -U pip setuptools wheel
pip install spacy

孔达

您也可以从安装Spacyconda通过conda-forge频道。有关原料(包括构建配方和配置),请查看this repository

conda install -c conda-forge spacy

更新空间

Spacy的一些更新可能需要下载新的统计模型。如果您运行的是spacy v2.0或更高版本,则可以使用validate命令检查您安装的型号是否兼容,如果不兼容,则打印有关如何更新它们的详细信息:

pip install -U spacy
python -m spacy validate

如果您训练过自己的模型,请记住您的训练和运行时输入必须匹配。更新Spacy后,我们建议重新培训您的模型使用新版本

📖有关从spacy 2.x升级到spacy 3.x的详细信息,请参阅migration guide

📦下载模型包

经过培训的空间管道可以安装为Python包这意味着它们是应用程序的一个组件,就像任何其他模块一样。可以使用Spacy的安装模型download命令,或通过将pip指向路径或URL手动执行

文档
Available Pipelines 详细的管道描述、精度数字和基准
Models Documentation 详细的使用和安装说明
Training 如何根据您的数据培训您自己的管道
# Download best-matching version of specific model for your spaCy installation
python -m spacy download en_core_web_sm

# pip install .tar.gz archive or .whl from path or URL
pip install /Users/you/en_core_web_sm-3.0.0.tar.gz
pip install /Users/you/en_core_web_sm-3.0.0-py3-none-any.whl
pip install https://github.com/explosion/spacy-models/releases/download/en_core_web_sm-3.0.0/en_core_web_sm-3.0.0.tar.gz

加载和使用模型

要加载模型,请使用spacy.load()使用模型名称或模型数据目录的路径

import spacy
nlp = spacy.load("en_core_web_sm")
doc = nlp("This is a sentence.")

您还可以import直接通过其全名创建模型,然后调用其load()不带参数的方法

import spacy
import en_core_web_sm

nlp = en_core_web_sm.load()
doc = nlp("This is a sentence.")

📖有关更多信息和示例,请查看models documentation

⚒从源代码编译

安装Spacy的另一种方法是克隆其GitHub repository并从源头上建造它。如果您想要更改代码库,这是常用的方法。您需要确保您有一个由Python发行版组成的开发环境,其中包括头文件、编译器pipvirtualenvgit已安装。编译器部分是最棘手的。如何做到这一点取决于您的系统

站台
Ubuntu 通过以下方式安装系统级依赖项apt-getsudo apt-get install build-essential python-dev git
Mac 安装最新版本的XCode包括所谓的“命令行工具”。MacOS和OS X附带预装的Python和Git
窗口 安装一个版本的Visual C++ Build ToolsVisual Studio Express与用于编译Python解释器的版本相匹配

有关更多详细信息和说明,请参阅上的文档compiling spaCy from source以及quickstart widget获取适合您的平台和Python版本的正确命令

git clone https://github.com/explosion/spaCy
cd spaCy

python -m venv .env
source .env/bin/activate

# make sure you are using the latest pip
python -m pip install -U pip setuptools wheel

pip install -r requirements.txt
pip install --no-build-isolation --editable .

要与附加软件一起安装,请执行以下操作:

pip install --no-build-isolation --editable .[lookups,cuda102]

🚦运行测试

Spacy伴随着一个extensive test suite为了运行测试,您通常需要克隆存储库并从源代码构建空间。这还将安装在中定义的所需开发依赖项和测试实用程序requirements.txt

或者,您可以运行pytest在已安装的spacy包裹。别忘了也要通过Spacy的安装测试实用程序requirements.txt

pip install -r requirements.txt
python -m pytest --pyargs spacy

Selenium-浏览器自动化框架和生态系统

Selenium是一个伞形项目,封装了支持Web浏览器自动化的各种工具和库。Selenium专门为W3C WebDriver specification-与所有主要Web浏览器兼容的平台和语言中立的编码接口

这个项目是由志愿贡献者慷慨捐赠数千小时进行代码开发和维护而实现的

Selenium的源代码位于Apache 2.0 license

文档

叙述性文档:

接口文档:

拉取请求

请阅读CONTRIBUTING.md在提交您的拉取请求之前

要求

  • Bazelisk中指定的Bazel版本自动下载的Bazel包装器.bazelversion文件,并透明地将所有命令行参数传递给真正的Bazel二进制文件
  • 最新版本的Java 11 OpenJDK
  • javajar在路径上(请确保使用java可从JDK执行,但不能从JRE执行)
    • 要测试这一点,请尝试运行以下命令javac如果您只安装了JRE,则此命令将不存在。如果您遇到一系列命令行选项,那么您引用的JDK是正确的
  • Python 3.7+
  • python在路上
  • The tox automation project对于Python:pip install tox
  • MacOS用户应该安装最新版本的Xcode,包括命令行工具。以下命令应该可以工作:
xcode-select --install
  • Apple Silicon Mac的用户应添加build --host_platform=//:rosetta致他们的.bazelrc.local文件。我们正在努力确保从长远来看这不是必需的
  • Windows用户应安装最新版本的Visual Studio命令行工具和生成工具
    • BAZEL_VS环境变量应该指向构建工具的位置,例如C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools
    • BAZEL_VC环境变量应该指向命令行工具的位置,例如C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC
    • BAZEL_VC_FULL_VERSION环境变量应包含已安装的命令行工具的版本,例如14.27.29110

可选要求

  • Ruby 2.0

Internet Explorer驱动程序

如果您计划编译IE driver,您还需要:

构建可以在任何平台上运行,但如果您不是在Windows上构建,则会以静默方式跳过IE的测试

大楼

巴泽尔

Bazel是由谷歌的优秀员工建造的。Bazel管理依赖项下载、生成Selenium二进制文件、执行测试,并且完成所有这些工作的速度都相当快

下面是运行Bazel的更详细的说明,但是如果您可以成功构建java和javascript文件夹而不出错,那么您应该相信您的系统上有正确的二进制文件

在构建之前

确保您安装了Firefox并安装了最新版本geckodriver在您的$PATH您可能需要不时更新此信息

通用构建目标

要从源代码构建最常用的Selenium模块,请从根项目文件夹执行以下命令:

bazel build java/...

如果您手头有一些额外的时间,您可以运行此命令以获得构建成功的额外信心。这将做更多的工作来构建所有的javascript工件:

bazel build java/... javascript/...

如果您正在对此项目中的java/或javascript/文件夹进行更改,并且此命令执行时没有错误,那么您应该能够创建更改的PR。(另见CONTRIBUTING.md)

构建详细信息

  • Bazel文件名为BUILD.bazel
  • crazyfun生成文件被称为build.desc这是一个较旧的构建系统,大部分仍在用于Ruby绑定的项目中

模块的构建顺序由构建系统决定。如果要构建单个模块(假设所有依赖模块之前都已构建),请尝试以下操作:

bazel test javascript/atoms:test

在这种情况下,javascript/atoms是模块目录,test是该目录BUILD.bazel文件

如你所见构建目标在日志中滚动,您可能需要单独运行它们

常见任务(Bazel)

要从源代码构建大量Selenium二进制文件,请从根文件夹运行以下命令:

bazel build java/... javascript/...

要构建网格部署JAR,请运行以下命令:

bazel build grid

要在项目的特定区域内运行测试,请使用“test”命令,后跟文件夹或目标。测试用“小”、“中”或“大”标记,并且可以用--test_size_filters选项:

bazel test --test_size_filters=small,medium java/...

Bazel的“test”命令将运行包中的测试,包括集成测试。期待着test java/...启动浏览器并消耗大量时间和资源

编辑代码

大多数团队成员使用IntelliJ IDEA或VS.Code进行日常编辑。如果您在IntelliJ中工作,我们强烈建议您安装Bazel IJ
plugin
其文档记录在its own site

如果您使用的是IntelliJ和Bazel插件,则会有一个项目视图签入到中的树中scripts/ij.bazelproject这将使运行和编辑代码变得更容易:)

游览

代码库通常围绕用于编写组件的语言进行划分。Selenium广泛使用JavaScript,所以让我们从这里开始。使用JavaScript很容易。首先,启动开发服务器:

bazel run debug-server

现在,导航到http://localhost:2310/javascript您会发现javascript/正在显示目录。我们使用Closure
Library
来开发大部分JavaScript,所以现在导航到http://localhost:2310/javascript/atoms/test

此目录中的测试是名称以_test.html单击其中一个以加载页面并运行测试

Maven POM文件

这是public Selenium Maven
repository

生成输出

bazel属性创建顶级目录组。bazel-每个目录上的前缀

在以下方面提供帮助go

更一般但更基本的帮助go

./go --help

go只是个包装而已Rake,因此您可以使用标准命令,如rake -T要获取有关可用目标的详细信息,请执行以下操作

马文本身

如果还不清楚,那么Selenium不是用Maven构建的。它是用bazel,不过这是用go如上所述,您不必对此了解太多

也就是说,可以相对快速地构建供Maven使用的硒片。只有在针对您的应用程序测试尖端的Selenium开发(我们欢迎)时,您才会真正想要这样做。以下是构建和部署到本地maven存储库的最快方法(~/.m2/repository),同时跳过Selenium自己的测试

./go maven-install

Maven罐子现在应该在你当地了~/.m2/repository

有用资源

请参阅Build Instructions关于构建零碎的硒的最后一句话的维基页面

在Linux上运行浏览器测试

为了运行浏览器测试,您首先需要安装特定于浏览器的驱动程序,例如geckodriverchromedriver,或edgedriver这些需要放在你的PATH

默认情况下,Bazel在您当前的X-server UI中运行这些测试。如果您愿意,也可以在虚拟或嵌套的X服务器中运行它们

  1. 运行X服务器Xvfb :99Xnest :99
  2. 运行窗口管理器,例如,DISPLAY=:99 jwm
  3. 运行您感兴趣的测试:
bazel test --test_env=DISPLAY=:99 //java/... --test_tag_filters=chrome

在虚拟X服务器中运行测试的一种简单方法是使用Bazel的--run_under功能:

bazel test --run_under="xvfb-run -a" //java/... --test_tag_filters=chrome

Bazel安装/故障排除

MacOS

巴泽利克(BAZELLISK)

Bazelisk是Bazel的Mac友好启动器。要安装,请执行以下步骤:

brew tap bazelbuild/tap && \
brew uninstall bazel; \
brew install bazelbuild/tap/bazelisk

Xcode

如果您收到提到Xcode的错误,则需要安装命令行工具

Bazel for Mac需要一些额外的步骤才能正确配置。首先要做的是:使用Bazelisk项目(Philwo提供),它是Bazel的纯Golang实现。要安装Bazelisk,请首先验证您的Xcode是否会合作:执行以下命令:

xcode-select -p

如果值为/Applications/Xcode.app/Contents/Developer/,您可以继续安装bazelisk。但是,如果返回值为/Library/Developer/CommandLineTools/,您需要将Xcode系统重定向到正确的值

sudo xcode-select -s /Applications/Xcode.app/Contents/Developer/
sudo xcodebuild -license

第一个命令将提示您输入密码。第二步要求您阅读新的Xcode许可,然后通过键入“Agree”接受它。

(多亏了this thread对于这些步骤)

Data-science-ipython-notebooks-数据科学Python笔记本:深度学习

数据-科学-IPython-笔记本

索引

深度学习

演示深度学习功能的IPython笔记本

张量流教程

其他TensorFlow教程:

笔记本电脑 描述
tsf-basics 在TensorFlow中学习基本操作,TensorFlow是Google提供的各种感知和语言理解任务的库
tsf-linear 在TensorFlow中实现线性回归
tsf-logistic 在TensorFlow中实现Logistic回归
tsf-nn 在TensorFlow中实现最近邻居
tsf-alex 在TensorFlow中实现AlexNet
tsf-cnn 卷积神经网络在TensorFlow中的实现
tsf-mlp 在TensorFlow中实现多层感知器
tsf-rnn 递归神经网络在TensorFlow中的实现
tsf-gpu 了解TensorFlow中的基本多GPU计算
tsf-gviz 了解TensorFlow中的图形可视化
tsf-lviz 了解TensorFlow中的损耗可视化

张量流练习

笔记本电脑 描述
tsf-not-mnist 通过为TensorFlow中的培训、开发和测试创建带有格式化数据集的Pickle,了解简单的数据管理
tsf-fully-connected 在TensorFlow中使用Logistic回归和神经网络逐步训练更深更精确的模型
tsf-regularization 通过训练全连通网络对TensorFlow中的notMNIST字符进行分类来探索正则化技术
tsf-convolutions 在TensorFlow中创建卷积神经网络
tsf-word2vec 在TensorFlow中对Text8数据训练跳格模型
tsf-lstm 在TensorFlow中对Text8数据训练LSTM字符模型

Theano-教程

笔记本电脑 描述
theano-intro Theano简介,它允许您高效地定义、优化和计算涉及多维数组的数学表达式。它可以使用GPU并执行高效的符号微分
theano-scan 学习扫描,这是一种在Theano图中执行循环的机制
theano-logistic 在Theano中实现Logistic回归
theano-rnn 递归神经网络在Theano中的实现
theano-mlp 在Theano中实现多层感知器

Keras-教程

笔记本电脑 描述
角膜 KERAS是一个用Python编写的开源神经网络库。它可以在TensorFlow或Theano上运行
setup 了解教程目标以及如何设置Kera环境
intro-deep-learning-ann 介绍使用KERAS和人工神经网络(ANN)进行深度学习
theano 通过使用权重矩阵和梯度了解Theano
keras-otto 通过观看卡格尔·奥托挑战赛了解凯拉斯
ann-mnist 基于KERAS的MNIST人工神经网络的简单实现
conv-nets 使用KERAS了解卷积神经网络(CNN)
conv-net-1 使用KERA识别MNIST中的手写数字-第1部分
conv-net-2 使用KERA识别MNIST中的手写数字-第2部分
keras-models 将预先培训的型号(如VGG16、VGG19、ResNet50和Inception v3)与KERA配合使用
auto-encoders 了解有关KERAS自动编码器的信息
rnn-lstm 使用KERAS了解递归神经网络(RNN)
lstm-sentence-gen 了解与KERA配合使用长短期内存(LSTM)网络的RNN

深度学习-其他

笔记本电脑 描述
deep-dream 基于Caffe的计算机视觉程序,使用卷积神经网络来查找和增强图像中的图案

科学工具包-学习

演示SCRICKIT学习功能的IPython笔记本

笔记本电脑 描述
intro 介绍笔记本到SCRICKIT-学习。Scikit-Learning添加了对大型多维数组和矩阵的Python支持,以及对这些数组进行操作的高级数学函数库的大型库
knn 在SCRICKIT-LEARN中实现k-近邻
linear-reg 在SCRICKIT-LEARCH中实现线性回归
svm 在SCRKIT-LEARN中实现带核和不带核的支持向量机分类器
random-forest 在SCRICKIT-LEARN中实现随机森林分类器和回归器
k-means 在SCRICIT-LEARN中实现k-均值聚类
pca 主成分分析在SCRICIT-LEARCH中的实现
gmm 在SCRICIT-LEARN中实现高斯混合模型
validation 在SCRICKIT-LEARN中实现验证和模型选择

统计推理法

演示使用SciPy功能进行统计推断的IPython笔记本

笔记本电脑 描述
尖刺的 SciPy是构建在Python的Numpy扩展上的数学算法和便利函数的集合。它为用户提供用于操作和可视化数据的高级命令和类,从而大大增强了交互式Python会话的功能
effect-size 通过分析男性和女性的身高差异,探索量化效应大小的统计数据。使用行为危险因素监测系统(BRFSS)的数据来估计美国成年女性和男性的平均身高和标准偏差
sampling 利用BRFSS数据分析美国男女平均体重探索随机抽样
hypothesis 通过分析头胎婴儿与其他婴儿的差异来探索假设检验

熊猫

演示熊猫功能的IPython笔记本

笔记本电脑 描述
pandas 用Python编写的用于数据操作和分析的软件库。提供用于操作数值表和时间序列的数据结构和操作
github-data-wrangling 通过分析中的GitHub数据,了解如何加载、清理、合并和要素工程Viz回购
Introduction-to-Pandas 熊猫简介
Introducing-Pandas-Objects 了解熊猫对象
Data Indexing and Selection 了解有关熊猫中的数据索引和选择的信息
Operations-in-Pandas 了解有关在熊猫中操作数据的信息
Missing-Values 了解有关处理熊猫中丢失的数据的信息
Hierarchical-Indexing 了解有关熊猫中的分层索引的信息
Concat-And-Append 了解有关组合数据集的信息:在熊猫中合并和追加
Merge-and-Join 了解有关组合数据集的信息:在熊猫中合并和连接
Aggregation-and-Grouping 了解有关在熊猫中聚合和分组的信息
Pivot-Tables 了解有关熊猫中的透视表的信息
Working-With-Strings 了解有关熊猫中的矢量化字符串操作的信息
Working-with-Time-Series 了解有关在熊猫中使用时间序列的信息
Performance-Eval-and-Query 了解高性能熊猫:熊猫中的eval()和query()

Matplotlib

演示matplotlib功能的IPython笔记本

笔记本电脑 描述
matplotlib Python 2D绘图库,以各种硬拷贝格式和跨平台交互环境生成出版物质量数据
matplotlib-applied 将matplotlib可视化应用于Kaggle比赛以进行探索性数据分析。了解如何创建条形图、直方图、子图2格网、归一化图、散点图、子图和核密度估计图
Introduction-To-Matplotlib Matplotlib简介
Simple-Line-Plots 了解有关Matplotlib中的简单线条图的信息
Simple-Scatter-Plots 了解有关Matplotlib中的简单散点图的信息
Errorbars.ipynb 了解有关在Matplotlib中可视化错误的信息
Density-and-Contour-Plots 了解Matplotlib中的密度和等高线绘图
Histograms-and-Binnings 了解有关Matplotlib中的直方图、二进制和密度的信息
Customizing-Legends 了解有关在Matplotlib中自定义地块图例的信息
Customizing-Colorbars 了解有关在Matplotlib中自定义色带的信息
Multiple-Subplots 了解有关Matplotlib中的多个子图的信息
Text-and-Annotation 了解有关Matplotlib中的文本和注记的信息
Customizing-Ticks 了解有关在Matplotlib中自定义刻度的信息
Settings-and-Stylesheets 了解有关自定义Matplotlib的信息:配置和样式表
Three-Dimensional-Plotting 了解有关在Matplotlib中进行三维打印的信息
Geographic-Data-With-Basemap 了解有关在Matplotlib中使用底图的地理数据的信息
Visualization-With-Seaborn 了解有关海运可视化的信息

麻木的

演示NumPy功能的IPython笔记本

笔记本电脑 描述
numpy 添加了对大型多维数组和矩阵的Python支持,以及对这些数组进行运算的大型高级数学函数库
Introduction-to-NumPy NumPy简介
Understanding-Data-Types 了解有关Python中的数据类型的信息
The-Basics-Of-NumPy-Arrays 了解NumPy阵列的基础知识
Computation-on-arrays-ufuncs 了解有关NumPy数组的计算:泛函
Computation-on-arrays-aggregates 了解有关聚合的信息:NumPy中的最小值、最大值以及介于两者之间的所有内容
Computation-on-arrays-broadcasting 了解有关数组计算的信息:在NumPy中广播
Boolean-Arrays-and-Masks 了解有关NumPy中的比较、掩码和布尔逻辑的信息
Fancy-Indexing 了解NumPy中的奇特索引
Sorting 了解有关在NumPy中对数组进行排序的信息
Structured-Data-NumPy 了解结构化数据:NumPy的结构化数组

Python-Data

IPython笔记本,演示面向数据分析的Python功能

笔记本电脑 描述
data structures 使用元组、列表、字典、集学习Python基础知识
data structure utilities 学习Python操作,如切片、范围、xrange、二等分、排序、排序、反转、枚举、压缩、列表理解
functions 了解更高级的Python功能:函数作为对象、lambda函数、闭包、*args、**kwargs curying、生成器、生成器表达式、itertools
datetime 了解如何使用Python日期和时间:datetime、strftime、strptime、timeDelta
logging 了解有关使用RotatingFileHandler和TimedRotatingFileHandler进行Python日志记录的信息
pdb 了解如何使用交互式源代码调试器在Python中进行调试
unit tests 了解如何在Python中使用NOSE单元测试进行测试

Kaggle-and-Business分析

中使用的IPython笔记本kaggle竞争和业务分析

笔记本电脑 描述
titanic 预测泰坦尼克号上的生还者。学习数据清理、探索性数据分析和机器学习
churn-analysis 预测客户流失。练习逻辑回归、梯度增强分类器、支持向量机、随机森林和k近邻。包括对念力矩阵、ROC图、特征重要性、预测概率和校准/识别的讨论

电光

演示电光和HDFS功能的IPython笔记本

笔记本电脑 描述
spark 内存集群计算框架,对于某些应用程序速度最高可提高100倍,并且非常适合机器学习算法
hdfs 在大型群集中跨计算机可靠地存储非常大的文件

MapReduce-Python

演示使用mrjob功能的Hadoop MapReduce的IPython笔记本

笔记本电脑 描述
mapreduce-python 在Python中运行MapReduce作业,在本地或Hadoop群集上执行作业。演示Python代码中的Hadoop流以及单元测试和mrjob用于分析Elastic MapReduce上的Amazon S3存储桶日志的配置文件。Disco是另一个基于python的替代方案。

AWS

演示Amazon Web服务(AWS)和AWS工具功能的IPython笔记本

另请查看:

  • SAWS:增强型AWS命令行界面(CLI)
  • Awesome AWS:库、开源Repos、指南、博客和其他资源的精选列表
笔记本电脑 描述
boto 针对Python的官方AWS SDK
s3cmd 通过命令行与S3交互
s3distcp 组合较小的文件,并通过接受模式和目标文件将它们聚合在一起。S3DistCp还可用于将大量数据从S3传输到您的Hadoop群集
s3-parallel-put 将多个文件并行上传到S3
redshift 充当建立在大规模并行处理(MPP)技术之上的快速数据仓库
kinesis 通过每秒处理数千个数据流的能力实时流式传输数据
lambda 运行代码以响应事件,自动管理计算资源

命令

IPython笔记本,演示Linux、Git等的各种命令行

笔记本电脑 描述
linux 类UNIX且大多兼容POSIX的计算机操作系统。磁盘使用情况、拆分文件、grep、sed、curl、查看正在运行的进程、终端语法突出显示和Vim
anaconda 发布用于大规模数据处理、预测分析和科学计算的Python编程语言,旨在简化包管理和部署
ipython notebook 基于Web的交互式计算环境,您可以在其中将代码执行、文本、数学、绘图和富媒体组合到单个文档中
git 强调速度、数据完整性并支持分布式非线性工作流的分布式修订控制系统
ruby 用于与AWS命令行和Jekyll交互,Jekyll是可托管在GitHub页面上的博客框架
jekyll 简单、支持博客的静电站点生成器,适用于个人、项目或组织站点。呈现Markdown或Textile and Liquid模板,并生成一个完整的静电网站,准备好由Apache HTTP Server、NGINX或其他Web服务器提供服务
pelican 基于Python的Jekyll替代方案
django 高级Python Web框架,鼓励快速开发和干净、实用的设计。它对共享报告/分析和博客很有用。较轻的替代方案包括PyramidFlaskTornado,以及Bottle

杂项

演示各种功能的IPython笔记本

笔记本电脑 描述
regex 数据争论中有用的正则表达式小抄
algorithmia Algorithmia是一个算法市场。本笔记本展示了4种不同的算法:人脸检测、内容摘要、潜在狄利克雷分配和光学字符识别

笔记本-安装

python

Anaconda是Python编程语言的免费发行版,用于大规模数据处理、预测分析和科学计算,旨在简化包管理和部署

按照说明进行安装Anaconda或者更轻的miniconda

设备-设置

有关设置数据分析开发环境的详细说明、脚本和工具,请参阅dev-setup回购

跑步-笔记本

要查看交互式内容或修改IPython笔记本中的元素,必须首先克隆或下载存储库,然后再运行笔记本。有关IPython笔记本的更多信息可以找到here.

$ git clone https://github.com/donnemartin/data-science-ipython-notebooks.git
$ cd data-science-ipython-notebooks
$ jupyter notebook

使用Python 2.7.x测试的笔记本电脑

学分

贡献

欢迎投稿!有关错误报告或请求,请submit an issue

联系方式-信息

请随时与我联系,讨论任何问题、问题或评论

许可证

这个存储库包含各种内容;有些是由Donne Martin开发的,有些是来自第三方的。第三方内容在这些方提供的许可下分发

由Donne Martin开发的内容按照以下许可证分发:

我在开放源码许可下向您提供此存储库中的代码和资源。因为这是我的个人存储库,您获得的我的代码和资源的许可证来自我,而不是我的雇主(Facebook)

Copyright 2015 Donne Martin

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

Django-rest-framework 一个强大而灵活的Django WebAPI的工具包

概述

DjangoREST框架是一个强大而灵活的构建WebAPI的工具包

您可能希望使用睡觉框架的一些原因:

有一个用于测试目的的实时示例API,available here

下面来自可浏览API的屏幕截图


要求

  • Python(3.5、3.6、3.7、3.8、3.9)
  • Django(2.2,3.0,3.1,3.2)

我们强烈推荐并且仅官方支持每个Python和Django系列的最新补丁版本

安装

使用以下方式安装pip

pip install djangorestframework

添加'rest_framework'致您的INSTALLED_APPS设置

INSTALLED_APPS = [
    ...
    'rest_framework',
]

示例

让我们来看一个使用睡觉框架构建用于访问用户和组的简单模型支持的应用编程接口的快速示例

像这样启动一个新项目

pip install django
pip install djangorestframework
django-admin startproject example .
./manage.py migrate
./manage.py createsuperuser

现在编辑example/urls.py项目中的模块:

from django.urls import path, include
from django.contrib.auth.models import User
from rest_framework import serializers, viewsets, routers

# Serializers define the API representation.
class UserSerializer(serializers.HyperlinkedModelSerializer):
    class Meta:
        model = User
        fields = ['url', 'username', 'email', 'is_staff']


# ViewSets define the view behavior.
class UserViewSet(viewsets.ModelViewSet):
    queryset = User.objects.all()
    serializer_class = UserSerializer


# Routers provide a way of automatically determining the URL conf.
router = routers.DefaultRouter()
router.register(r'users', UserViewSet)


# Wire up our API using automatic URL routing.
# Additionally, we include login URLs for the browsable API.
urlpatterns = [
    path('', include(router.urls)),
    path('api-auth/', include('rest_framework.urls', namespace='rest_framework')),
]

我们还想为我们的API配置几个设置

将以下内容添加到您的settings.py模块:

INSTALLED_APPS = [
    ...  # Make sure to include the default installed apps here.
    'rest_framework',
]

REST_FRAMEWORK = {
    # Use Django's standard `django.contrib.auth` permissions,
    # or allow read-only access for unauthenticated users.
    'DEFAULT_PERMISSION_CLASSES': [
        'rest_framework.permissions.DjangoModelPermissionsOrAnonReadOnly',
    ]
}

就这样,我们完了!

./manage.py runserver

现在,您可以在浏览器中打开API,地址为http://127.0.0.1:8000/,并查看新的“用户”API。如果您使用Login控件,您还可以在系统中添加、创建和删除用户

您还可以使用命令行工具与API交互,例如curl例如,要列出用户端点,请执行以下操作:

$ curl -H 'Accept: application/json; indent=4' -u admin:password http://127.0.0.1:8000/users/
[
    {
        "url": "http://127.0.0.1:8000/users/1/",
        "username": "admin",
        "email": "admin@example.com",
        "is_staff": true,
    }
]

或创建新用户:

$ curl -X POST -d username=new -d email=new@example.com -d is_staff=false -H 'Accept: application/json; indent=4' -u admin:password http://127.0.0.1:8000/users/
{
    "url": "http://127.0.0.1:8000/users/2/",
    "username": "new",
    "email": "new@example.com",
    "is_staff": false,
}

文档和支持

有关该项目的完整文档,请访问https://www.django-rest-framework.org/

有关问题和支持,请使用REST framework discussion group,或#restframework关于Freenode IRC

您可能还想要follow the author on Twitter

安全性

请参阅security policy

Black-不折不扣的Python代码格式化程序

“你喜欢什么颜色都行。”

黑色是不折不扣的Python代码格式化程序。通过使用它,您同意放弃对手动格式化细节的控制。作为回报,黑色为您提供速度、决定论和从pycodestyle对格式化喋喋不休。你将为更重要的事情节省时间和精力。

不管您正在阅读的是什么项目,被涂黑的代码看起来都是一样的。格式在一段时间后会变得透明,您可以将注意力放在内容上

黑色通过产生尽可能小的差异,使代码审查速度更快

现在使用Black Playground看这场比赛PyCon 2019 talk了解更多信息


Read the documentation on ReadTheDocs!


安装和使用

安装

黑色可以通过运行以下命令来安装pip install black它需要运行Python 3.6.2+。如果还想格式化Python 2代码,请使用安装pip install black[python2]

如果你不能等最新的热度要从GitHub安装,请使用:

pip install git+git://github.com/psf/black

用法

要立即开始使用合理的默认值,请执行以下操作:

black {source_file_or_directory}

你可以跑黑色如果将其作为脚本运行不起作用,则将其作为程序包运行:

python -m black {source_file_or_directory}

有关更多信息,请参阅我们的文档:

注意:这是测试版产品

黑色已经是很久以前的事了successfully used许多项目,大大小小的。Black有一个全面的测试套件,具有高效的并行测试,以及我们自己的自动格式化和并行持续集成运行器。然而,黑色仍然是测试版。在一段时间内,情况可能会不稳定。这是由“Beta”Trove分类器以及版本号中的“b”明确表示的。这对你来说意味着在格式化程序变得稳定之前,您应该预期将来会更改一些格式这就是说,没有计划进行重大的风格改变,主要是对bug报告的响应

此外,作为减慢处理的安全措施,黑色将检查重新格式化的代码是否仍然生成与原始代码有效等效的有效AST(请参阅Pragmatism部分获取详细信息)。如果你感到自信,使用--fast

这个黑色代码样式

黑色是一个符合PEP8标准的固执己见的格式化程序。黑色就地重新格式化整个文件。样式配置选项是故意限制的,很少添加。它不考虑以前的格式(请参见Pragmatism(对于例外情况)

我们的文档涵盖了当前黑色代码样式,但也记录了对其的计划更改。它们都值得一看:

在提交问题之前,请参阅本文档。看起来像是窃听器的行为可能是故意的

实用主义

早期版本的黑色在某些方面曾经是专制主义的。他们模仿它的最初作者。这在当时是不错的,因为它使实现更简单,而且用户也不多。报道的边缘病例不多。作为一个成熟的工具,黑色确实对它本来持有的规则做出了一些例外

请在提交问题之前参考本文档,就像上面的文档一样。看起来像是窃听器的行为可能是故意的

配置

黑色控件读取其命令行选项的特定于项目的默认值。pyproject.toml文件。这对于指定自定义--include--exclude/--force-exclude/--extend-exclude项目的模式

您可以在我们的文档中找到更多详细信息:

如果您正在寻找更一般的配置文档,请执行以下操作:

PRO-TIP:如果您问自己“我需要配置什么吗?”答案是否定的。黑色都是关于合理的违约。应用这些缺省值将使您的代码与许多其他代码兼容黑色格式化项目

使用方

以下值得注意的开源项目值得信任黑色实施一致的代码样式:pytest、毒性、金字塔、Django通道、假设、attrs、SQLAlChemy、诗歌、Pypa应用程序(Warehouse、Bandersnatch、Pipenv、viralenv)、Pandas、Pillow、Every Datadog Agent Integration、Home Assistant、Zulip

以下组织使用黑色:Facebook,Dropbox,Mozilla,Quora,Duolingo

我们有没有错过什么人?让我们知道

推荐信

迈克·拜耳author of SQLAlchemy

在我整个编程生涯中,我想不出有哪一个工具能通过它的引入给我带来更大的生产力提升。我现在可以进行大约1%的按键重构,这是以前我们无法格式化代码时所需要的

尘土飞扬的菲利普斯writer

黑色固执己见,所以你不必

希内克·施拉瓦克creator of attrs,Twisted和CPython的核心开发者:

我想要的圣诞礼物就是一个不会让人讨厌的自动格式化程序!

卡尔·迈耶Django核心开发者:

至少名字是好的

肯尼思·赖茨(Kenneth Reitz),创建者requestspipenv

这极大地改进了我们代码的格式。万分感谢!

展现你的风格

使用项目自述文件中的徽章。md:

[![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)

使用Readme.rst中的徽章:

.. image:: https://img.shields.io/badge/code%20style-black-000000.svg
    :target: https://github.com/psf/black

如下所示:

许可证

麻省理工学院

贡献

欢迎!很高兴看到你愿意把项目做得更好。您可以通过阅读以下内容开始:

您也可以查看投稿文档的睡觉或者与开发者对话:

更改日志

木头已经变得相当长了。它移到了自己的文件中

看见CHANGES

作者

现在的作者名单相当长,所以它在自己的档案里

看见AUTHORS.md

行为规范

所有参加这次活动的人黑色项目,特别是在问题跟踪器、拉取请求和社交媒体活动中,应该尊重他人,更普遍地遵循Python Community Code of Conduct

同时,幽默也受到鼓励。事实上,基本熟悉Monty Python的飞行马戏团是可以预期的。我们不是野蛮人

如果你真的需要打人耳光,边跳舞边和鱼做

Odoo 奥杜 开源应用程序促进您的业务发展

Odoo是一套基于Web的开源商业应用程序

主要的Odoo应用程序包括一个Open Source CRMWebsite BuildereCommerceWarehouse ManagementProject ManagementBilling & AccountingPoint of SaleHuman ResourcesMarketingManufacturing

Odoo应用程序可以作为独立的应用程序使用,但它们也可以无缝集成,因此您可以获得功能齐全的Open Source ERP当您安装多个应用程序时

Odoo入门

有关标准安装,请遵循Setup instructions从文档中

要了解该软件,我们推荐Odoo eLearning,或Scale-up,即business game开发人员可以从the developer tutorials

Pipenv-面向人类的Python开发工作流

Pipenv 是一个旨在带来最好的包装世界的工具(捆扎师、作曲家、NPM、货物、纱线等)来到Python世界在我们的世界里,Windows是一等公民

它会自动为您的项目创建和管理一个虚拟环境,并在您的Pipfile当您安装/卸载软件包时。它还产生了非常重要的Pipfile.lock,它用于生成确定性构建。

Pipenv寻求解决的问题是多方面的:

  • 您不再需要使用pipvirtualenv分开的。他们一起工作
  • 管理requirements.txt文件can be
    problematic
    ,因此Pipenv使用即将到来的PipfilePipfile.lock取而代之的是,对于基本用例,哪个更优越
  • 散列总是在任何地方使用。保安。自动暴露安全漏洞
  • 让您深入了解依赖关系图(例如$ pipenv graph)
  • 通过加载简化开发工作流.env文件

您可以在浏览器中快速播放Pipenv:

安装

如果您使用的是Debian Buster+:

$ sudo apt install pipenv

或者,如果您使用的是Fedora:

$ sudo dnf install pipenv

或者,如果您使用的是FreeBSD:

# pkg install py36-pipenv

或者,如果您使用的是Windows:

# pip install --user pipenv

当以上选项都不存在时,建议使用Pipx

$ pipx install pipenv

否则,请参阅documentation有关说明,请参阅

✨🍰✨

☤用户表彰

大卫·刚(David Gang)

这个包管理器真的很棒。这是我第一次确切地知道我安装的依赖项是什么,以及可传递依赖项是什么。再加上安装是确定性的这一事实,使得这个包管理器像货物一样是一流的

贾斯汀·迈尔斯·福尔摩斯

Pipenv最终是一种抽象,其目的是让头脑参与进来,而不仅仅是文件系统

☤功能

  • 真正实现确定性构建,同时轻松指定只有你想要的
  • 生成并检查锁定依赖项的文件哈希
  • 自动安装所需的Python,如果pyenv有空房吗?
  • 自动递归地查找您的项目主目录,方法是查找Pipfile
  • 自动生成一个Pipfile,如果不存在
  • 自动在标准位置创建一个Virtualenv
  • 自动将包添加/删除到Pipfile卸载/安装它们时
  • 自动加载.env文件(如果存在)

主要命令有installuninstall,以及lock,它会生成一个Pipfile.lock这些都是用来取代$ pip install用法以及手动虚拟环境管理(要激活虚拟环境,请运行$ pipenv shell)

基本概念

  • 当虚拟环境不存在时,将自动创建一个虚拟环境
  • 当没有参数传递给install,所有套餐[packages]将安装指定的
  • 要初始化Python 3虚拟环境,请运行$ pipenv --three
  • 要初始化Python 2虚拟环境,请运行$ pipenv --two
  • 否则,无论viralenv缺省值是什么,都将是缺省值

其他命令

  • shell将在激活了viralenv的情况下生成一个shell
  • run将运行来自Virtualenv的给定命令,并转发任何参数(例如$ pipenv run python)
  • check断言当前环境满足PEP 508要求
  • graph将打印所有已安装依赖项的漂亮图表

外壳完井

例如,对于鱼,把这个放在你的~/.config/fish/completions/pipenv.fish

eval (pipenv --completion)

或者,使用bash,将此内容放入您的.bashrc.bash_profile

eval "$(pipenv --completion)"

魔术外壳完成现已启用!还有一个fish
plugin
,它将自动为您激活您的子壳!

鱼是最好的贝壳。你应该用它

☤使用率

$ pipenv
Usage: pipenv [OPTIONS] COMMAND [ARGS]...

Options:
  --where          Output project home information.
  --venv           Output virtualenv information.
  --py             Output Python interpreter information.
  --envs           Output Environment Variable options.
  --rm             Remove the virtualenv.
  --bare           Minimal output.
  --completion     Output completion (to be eval'd).
  --man            Display manpage.
  --three / --two  Use Python 3/2 when creating virtualenv.
  --python TEXT    Specify which version of Python virtualenv should use.
  --site-packages  Enable site-packages for the virtualenv.
  --version        Show the version and exit.
  -h, --help       Show this message and exit.


Usage Examples:
   Create a new project using Python 3.7, specifically:
   $ pipenv --python 3.7

   Remove project virtualenv (inferred from current directory):
   $ pipenv --rm

   Install all dependencies for a project (including dev):
   $ pipenv install --dev

   Create a lockfile containing pre-releases:
   $ pipenv lock --pre

   Show a graph of your installed dependencies:
   $ pipenv graph

   Check your installed dependencies for security vulnerabilities:
   $ pipenv check

   Install a local setup.py into your virtual environment/Pipfile:
   $ pipenv install -e .

   Use a lower-level pip command:
   $ pipenv run pip freeze

Commands:
  check      Checks for security vulnerabilities and against PEP 508 markers
             provided in Pipfile.
  clean      Uninstalls all packages not specified in Pipfile.lock.
  graph      Displays currently–installed dependency graph information.
  install    Installs provided packages and adds them to Pipfile, or (if no
             packages are given), installs all packages from Pipfile.
  lock       Generates Pipfile.lock.
  open       View a given module in your editor.
  run        Spawns a command installed into the virtualenv.
  scripts    Displays the shortcuts in the (optional) [scripts] section of 
             Pipfile. 
  shell      Spawns a shell within the virtualenv.
  sync       Installs all packages specified in Pipfile.lock.
  uninstall  Un-installs a provided package and removes it from Pipfile.

找到项目:

$ pipenv --where
/Users/kennethreitz/Library/Mobile Documents/com~apple~CloudDocs/repos/kr/pipenv/test

找到Virtualenv:

$ pipenv --venv
/Users/kennethreitz/.local/share/virtualenvs/test-Skyy4vre

找到Python解释器:

$ pipenv --py
/Users/kennethreitz/.local/share/virtualenvs/test-Skyy4vre/bin/python

安装软件包:

$ pipenv install
Creating a virtualenv for this project...
...
No package provided, installing all dependencies.
Virtualenv location: /Users/kennethreitz/.local/share/virtualenvs/test-EJkjoYts
Installing dependencies from Pipfile.lock...
...

To activate this project's virtualenv, run the following:
$ pipenv shell

从GIT安装:

您可以使用按照以下规则格式化的URL从GIT和其他版本控制系统安装带有Pipenv的软件包:

<vcs_type>+<scheme>://<location>/<user_or_organization>/<repository>@<branch_or_tag>#<package_name>

唯一可选的部分是@<branch_or_tag>部分。在SSH上使用GIT时,您可以使用速记VC和方案别名git+git@<location>:<user_or_organization>/<repository>@<branch_or_tag>#<package_name>请注意,这将被转换为git+ssh://git@<location>在解析时

的有效值<vcs_type>包括gitbzrsvn,以及hg的有效值<scheme>包括http,httpsssh,以及file在特定情况下,您还可以访问其他方案:svn可以与svn作为一个计划,并且bzr可以与sftplp

请注意,它是强烈推荐在可编辑模式下安装任何受版本控制的依赖项,请使用pipenv install -e,以确保每次执行依赖项解析时都可以使用存储库的最新副本执行依赖项解析,并确保它包括所有已知的依赖项

以下是安装位于以下位置的git存储库的用法示例https://github.com/requests/requests.gitFrom标签v2.19.1作为包名称requests

$ pipenv install -e git+https://github.com/requests/requests.git@v2.19#egg=requests
Creating a Pipfile for this project...
Installing -e git+https://github.com/requests/requests.git@v2.19.1#egg=requests...
[...snipped...]
Adding -e git+https://github.com/requests/requests.git@v2.19.1#egg=requests to Pipfile's [packages]...
[...]

您可以阅读更多关于pip’s implementation of vcs support here

安装开发依赖项:

$ pipenv install pytest --dev
Installing pytest...
...
Adding pytest to Pipfile's [dev-packages]...

显示依赖关系图:

$ pipenv graph
requests==2.18.4
  - certifi [required: >=2017.4.17, installed: 2017.7.27.1]
  - chardet [required: >=3.0.2,<3.1.0, installed: 3.0.4]
  - idna [required: >=2.5,<2.7, installed: 2.6]
  - urllib3 [required: <1.23,>=1.21.1, installed: 1.22]

生成锁定文件:

$ pipenv lock
Assuring all dependencies from Pipfile are installed...
Locking [dev-packages] dependencies...
Locking [packages] dependencies...
Note: your project now has only default [packages] installed.
To install [dev-packages], run: $ pipenv install --dev

安装所有开发人员依赖项:

$ pipenv install --dev
Pipfile found at /Users/kennethreitz/repos/kr/pip2/test/Pipfile. Considering this to be the project home.
Pipfile.lock out of date, updating...
Assuring all dependencies from Pipfile are installed...
Locking [dev-packages] dependencies...
Locking [packages] dependencies...

卸载所有内容:

$ pipenv uninstall --all
No package provided, un-installing all dependencies.
Found 25 installed package(s), purging...
...
Environment now purged and fresh!

使用外壳:

$ pipenv shell
Loading .env environment variables...
Launching subshell in virtual environment. Type 'exit' or 'Ctrl+D' to return.
$ ▯

☤文档

文档位于pipenv.pypa.io

Airflow-Apache Airflow 以编程方式创作、调度和监控工作流的平台

Apache Airflow(或简称Airflow)是以编程方式创作、计划和监控工作流的平台

将工作流定义为代码后,它们将变得更具可维护性、可版本化、可测试性和协作性

使用Airflow将工作流创作为任务的有向无环图(DAG)。气流调度器在遵循指定依赖关系的同时对一组工作人员执行任务。丰富的命令行实用程序使在DAG上执行复杂操作变得轻而易举。丰富的用户界面使您可以轻松地可视化生产中运行的管道、监控进度以及在需要时排除问题故障

目录

项目重点

气流与主要为静电且变化缓慢的工作流配合使用效果最好。当DAG结构从一次运行到下一次运行类似时,它允许围绕工作单元和连续性保持清晰。其他类似的项目包括LuigiOozieAzkaban

Airflow通常用于处理数据,但认为任务理想上应该是幂等的(即,任务的结果将是相同的,并且不会在目标系统中创建重复数据),并且不应该将大量数据从一个任务传递到下一个任务(尽管任务可以使用Airflow的传递元数据Xcom feature)。对于大容量、数据密集型任务,最佳做法是将任务委托给专门从事该类型工作的外部服务

Airflow不是一种流解决方案,但它通常用于处理实时数据,成批地将数据从流中拉出

原则

  • 动态的:气流管道配置为代码(Python),允许动态生成管道。这允许编写动态实例化管道的代码
  • 可扩展的:轻松定义您自己的运算符、执行器和扩展库,使其符合适合您的环境的抽象级别
  • 优雅的:气流管道是精干而清晰的。将脚本参数化内置到气流的核心中,使用功能强大的金家模板引擎
  • 可扩展:Airflow采用模块化架构,并使用消息队列来编排任意数量的工作人员

要求

Apache Airflow使用以下各项进行测试:

主版本(Dev) 稳定版本(2.1.1)
python 3.6、3.7、3.8、3.9 3.6、3.7、3.8
库伯内斯 1.20、1.19、1.18 1.20、1.19、1.18
PostgreSQL 9.6、10、11、12、13 9.6、10、11、12、13
MySQL 5.7,8 5.7,8
SQLite 3.15.0+ 3.15.0+
MSSQL(试验性) 2017、2019年

注:MySQL5.x版本不能运行多个调度程序或有限制–请参阅Scheduler docs未测试/推荐使用MariaDB

注:SQLite用于气流测试。请不要在生产中使用它。我们建议使用SQLite的最新稳定版本进行本地开发

快速入门

访问Airflow官方网站文档(最新稳定版本)以获取以下方面的帮助installing Airflowgetting started,或通过更完整的tutorial

注意:如果您正在查找主分支(最新开发分支)的文档:您可以在s.apache.org/airflow-docs

有关气流改善建议(AIP)的更多信息,请访问Airflow Wiki

相关项目的文档,如提供程序包、Docker映像、Helm Chart,您可以在the documentation index

从PyPI安装

我们将Apache Airflow发布为apache-airflowPyPI格式的包。然而,安装它有时可能会很棘手,因为Airflow既是一个库,也是一个应用程序。库通常使它们的依赖项保持打开,而应用程序通常将它们钉住,但是我们不应该同时做这两件事。我们决定使我们的依赖项尽可能地开放(在setup.py),因此如果需要,用户可以安装不同版本的库。这就是说,时不时地,明摆着pip install apache-airflow将无法工作或将产生无法使用的气流安装

但是,为了实现可重复安装,我们还在孤儿中保留了一组“已知可以工作”的约束文件constraints-mainconstraints-2-0树枝。对于每个主要/次要Python版本,我们将那些“已知正在工作”的约束文件分开保存。从PyPI安装气流时,可以将它们用作约束文件。请注意,您必须在URL中指定正确的气流标签/版本/分支和Python版本

  1. 仅安装气流:

注:仅限pip目前官方支持安装

虽然他们使用其他工具(如poetrypip-tools,它们共享的工作流不同于pip-尤其是在约束与需求管理方面。通过以下方式安装Poetrypip-tools当前不支持

如果要使用这些工具安装气流,则应使用约束文件并将其转换为工具所需的适当格式和工作流

pip install apache-airflow==2.1.1 \
 --constraint "https://raw.githubusercontent.com/apache/airflow/constraints-2.1.1/constraints-3.7.txt"
  1. 使用附加软件安装(例如Postgres、Google)
pip install apache-airflow[postgres,google]==2.1.1 \
 --constraint "https://raw.githubusercontent.com/apache/airflow/constraints-2.1.1/constraints-3.7.txt"

有关安装提供程序包的信息,请查看providers

官方源代码

阿帕奇气流是一种Apache Software Foundation(ASF)项目,我们的官方源代码发布:

遵循ASF规则,发布的源包必须足以让用户构建和测试版本,前提是他们可以访问适当的平台和工具

便利套餐

还有其他安装和使用气流的方法。这些都是“方便”的方法–它们不是“官方发布”,正如ASF Release Policy,但是它们可以由不想自己构建软件的用户使用

这些是-按照人们安装气流的最常见方式的顺序:

  • PyPI releases使用标准安装风量的步骤pip工具
  • Docker Images要通过以下方式安装风量,请执行以下操作docker工具,在Kubernetes,Helm图表中使用它们,docker-composedocker swarm等。您可以在中阅读有关使用、自定义和扩展图像的更多信息Latest docs中的内部结构的详细信息。IMAGES.rst文档
  • Tags in GitHub要检索用于通过git生成官方源码包的git项目源代码,请执行以下操作:

所有这些工件都不是官方发布的,但它们都是使用官方发布的来源准备的。其中一些工件是“开发”或“预发布”的,它们按照ASF政策被清楚地标记为“开发”或“预发布”

用户界面

  • DAGS:环境中所有DAG的概述

  • :跨时间的DAG的树表示形式

  • 图表:可视化特定运行的DAG依赖项及其当前状态

  • 任务工期:一段时间内花在不同任务上的总时间

  • 甘特图:DAG的持续时间和重叠

  • 代码:查看DAG源代码的快捷方式

语义版本化

从Airflow 2.0.0开始,我们支持严格SemVer适用于已发布的所有软件包的方法

我们几乎没有达成一致的特定规则来定义不同包的版本控制细节:

  • 气流:SemVer规则仅适用于核心气流(不包括对供应商的任何更改)。更改气流依赖性版本的限制本身并不是突破性的更改
  • 气流供应器:SemVer规则仅适用于特定提供程序代码中的更改。软件包的SemVer主要版本和次要版本独立于气流版本。例如google 4.1.0amazon 3.0.3提供程序可以随同安装在一起Airflow 2.1.1如果提供程序和气流包之间存在交叉依赖限制,则它们在提供程序中显示为install_requires限制。我们的目标是保持供应商与之前发布的所有Airflow 2版本的向后兼容性,但有时会有突破性的更改,这可能会使一些或所有供应商指定最低气流版本。更改最低支持气流版本对提供商来说是一项突破性更改,因为安装新提供商可能会自动升级气流(这可能是升级提供商的不良副作用)
  • 气流舵图:SemVer规则仅适用于图表中的更改。该图表的SemVer主要版本和次要版本独立于气流版本。我们的目标是保持头盔图表与所有发布的Airflow 2版本的向后兼容性,但一些新功能可能只能从特定的Airlfow版本开始工作。但是,我们可能会将舵图限制为依赖于最小气流版本
  • Airflow API客户端:SemVer主要版本和次要版本跟随气流的主要版本和次要版本。气流的第一个主要或次要X.Y.0版本之后应始终跟随所有客户端的X.Y.0版本。然后,客户端可以独立于气流补丁版本,发布其自己的带有错误修复的补丁版本

版本生命周期

Apache Airflow版本生命周期:

版本 当前修补程序/次要修补程序 状态 第一个版本 有限的支持 停产/终止
2个 2.1.1 支持 2020年12月17日 2021年12月 待定
1.10 1.10.15 停产 2018年8月27日 2020年12月17日 2021年6月17日
1.9 1.9.0 停产 2018年1月03日 2018年8月27日 2018年8月27日
1.8 1.8.2 停产 2017年3月19日 2018年1月03日 2018年1月03日
1.7 1.7.1.2 停产 2016年3月28日 2017年3月19日 2017年3月19日

有限的支持版本将仅受安全和关键错误修复支持。EOL版本将不会得到任何修复,也不会获得支持。我们始终建议所有用户针对正在使用的任何主要版本运行最新的可用次要版本。我们高度建议在最早方便的时间并在停产日期之前升级到最新的Airflow主要版本

支持Python和Kubernetes版本

从AirFlow2.0开始,我们同意使用某些规则来支持Python和Kubernetes。它们基于Python和Kubernetes的官方发布时间表,在Python Developer’s GuideKubernetes version skew policy

  1. 当Python和Kubernetes版本达到EOL时,我们不再支持它们。我们在EOL日期之后立即在Main中取消对这些EOL版本的支持,当我们发布第一个新的次要版本(或如果没有新的次要版本,则为主要版本)时,它将被有效地删除。例如,对于Python 3.6,这意味着我们在2021年12月23日之后立即在Main中停止支持,并且在此之后发布的第一个主要或次要版本将不会包含它
  2. 支持Python/Kubernetes的“最旧”版本是默认版本。“默认”仅在使用DockerHub中提供的此默认版本和默认参考图像运行的配置项PR中的“冒烟测试”方面有意义。目前apache/airflow:latestapache/airflow:2.1.1图像都是Python 3.6图像,但是,2021年12月23日之后的Airflow版本的第一个次要/主要版本将成为Python 3.7图像
  3. 正式发布后,我们在Main中支持新版本的Python/Kubernetes,一旦我们让它们在我们的CI管道中工作(这可能不是立即进行的,因为大多数情况下依赖于Python的新版本),我们就会基于工作CI设置发布新的图像/Airflow中的支持

有关Python版本要求的其他说明

  • 以前的版本requires使用Python 3时至少使用Python 3.5.3

贡献

想要帮助构建Apache Airflow吗?请查看我们的contributing documentation

中描述了Apache Airflow的官方Docker(容器)图像IMAGES.rst

谁使用Apache Airflow?

400多个组织正在使用Apache Airflowin the wild

谁维护阿帕奇气流?

气流是community,但是core committers/maintainers负责审核和合并PR,并围绕新功能请求指导对话。如果您想成为一名维护员,请查看Apache Airflowcommitter requirements

我可以在演示文稿中使用Apache Airflow徽标吗?

是!一定要遵守阿帕奇基金会trademark policies和阿帕奇气流Brandbook有关最新徽标的信息,请参阅this repo和Apache软件基金会website

气流商品

如果你想要阿帕奇气流贴纸、t恤等,那就去看看吧。Redbubble Shop

链接

赞助商

Apache Airflow的CI基础设施由以下各方赞助:


Awesome-python-cn-Python 资源大全中文版

python资源大全中文版

awesome-python是Vinta发起维护的Python资源列表,内容包括:WEB框架、网络爬虫、网络内容提取、模板引擎、数据库、数据可视化、图片处理、文本处理、自然语言处理、机器学习、日志、代码分析等。由“开源前哨”和“python开发者”微信公号团队维护更新.

本项目的参与者

注:名单不分排名,不定期补充更新

资源列表

环境管理

管理Python版本和环境的工具

  • p:非常简单的交互式Python版本管理工具.
  • pyenv:简单的Python版本管理工具.
  • Vex:可以在虚拟环境中执行命令。
  • virtualenv:创建独立Python环境的工具.
  • virtualenvwrapper:Virtualenv的一组扩展。
  • buildout:在隔离环境初始化后使用声明性配置管理。

包管理

管理包和依赖的工具.

  • pip:Python包和依赖关系管理工具。
  • pip-tools:保证Python包依赖关系更新的一组工具.
  • PyPI:Python正式的第三方包软件存储库。
  • pipenv:Python官方推荐的新一代包管理工具。
  • poetry:可完全取代setup.py的包管理工具。
  • conda:跨平台的Python二进制包管理工具.
  • Curdling:管理Python包的命令行工具.
  • wheel:python分发的新标准,意在取代蛋。

包仓库

本地pyi仓库服务和代理.

  • warehouse:下一代pypi.
  • bandersnatch:Pypa提供的pypi镜像工具.
  • devpi:Pypi服务和打包/测试/分发工具.
  • localshop:本地pypi服务(自定义包并且自动对pypi镜像)。

分发

打包为可执行文件以便分发.

  • PyInstaller:将python程序转换成独立的执行文件(跨平台)。
  • cx_Freeze:将Python程序转换为带有一个动态链接库的可执行文件.
  • dh-virtualenv:构建并将Virtualenv虚拟环境作为一个debian包来发布。
  • Nuitka:将脚本、模块、包编译成可执行文件或扩展模块。
  • py2app:将Python脚本变为独立软件包(MacOSX)。
  • py2exe:WindowsPython脚本变为独立软件包(Windows.
  • pynsist:一个用来创建视窗安装程序的工具,可以在安装程序中打包Python本身.
  • pyarmor:一个用于加密Python脚本的工具,也可以将加密后的脚本绑定到固件上,或设置已加密脚本的有效期.
  • shiv:一个命令行工具,可用于构建完全独立的Zip应用(PEP441所描述的那种),同时包含了所有的依赖项.

构建工具

将源码编译成软件.

  • buildout:一个构建系统,从多个组件来创建,组装和部署应用。
  • BitBake:针对嵌入式linux的类似make的构建工具.
  • fabricate:对任何语言自动找到依赖关系的构建工具。
  • PlatformIO:多平台命令行构建工具。
  • PyBuilder:纯Python实现的持续化构建工具.
  • SCons:软件构建工具。

交互式解析器

交互式Python解析器.

文件

文件管理和MIME(多用途的网际邮件扩充协议)类型检测.

  • aiofiles书名:基于Asyncio,提供文件异步操作.
  • imghdr:(Python标准库)检测图片类型.
  • mimetypes:(Python标准库)将文件名映射为MIME类型.
  • path.py:对os.Path进行封装的模块.
  • pathlib:(Python3.4+标准库)跨平台的、面向对象的路径操作库。
  • python-magic:文件类型检测的第三方库libMagic的Python接口。
  • Unipath:用面向对象的方式操作文件和目录。
  • watchdog:管理文件系统事件的接口和外壳工具。
  • PyFilesystem2:Python的文件系统抽象层。

日期和时间

操作日期和时间的类库.

  • arrow:更好的Python日期时间操作类库.
  • Chronyk:Python3的类库,用于解析手写格式的时间和日期。
  • dateutil:python date time模块的扩展。
  • delorean:解决Python中有关日期处理的棘手问题的库.
  • maya:人性化的时间处理库。
  • moment:一个用来处理时间和日期的Python库.灵感来自于Moment.js.
  • pendulum:一个比箭头更具有明确的,可预测的行为的时间操作库。
  • PyTime:一个简单易用的Python模块,用于通过字符串来操作日期/时间.
  • pytz:现代以及历史版本的世界时区定义。将时区数据库引入python。
  • when.py:提供用户友好的函数来帮助用户进行常用的日期和时间操作。
  • dateutil:Python标准包datetime的扩展.
  • moment:一个处理日期/时间的库,灵感来自Moment.js那就是。
  • pytz:支持跨平台时区计算,并将tz database引入python。

文本处理

用于解析和操作文本的库.

  • 通用
    • chardet字符编码检测器,兼容Python2和Python3.
    • difflib:(Python标准库)帮助我们进行差异化比较.
    • ftfy:让unicode文本更完整更连贯。
    • fuzzywuzzy:模糊字符串匹配。
    • Levenshtein:快速计算编辑距离以及字符串的相似度。
    • pangu.py:在中日韩语字符和数字字母之间添加空格。
    • pypinyin:汉字拼音转换工具Python版.
    • shortuuid:一个生成器库,用以生成简洁的,明白的,url安全的uuid。
    • simplejson:Python的Json编码、解码器.
    • unidecode:unicode文本的ascii转换形式。
    • uniout:打印可读的字符,而不是转义的字符串。
    • xpinyin:一个用于把汉字转换为拼音的库。
    • pyfiglet:Figlet的Python实现.
    • flashtext:一个高效的文本查找替换库。
    • textdistance:支持30多种算法来计算序列之间的距离。
  • Slug化
    • awesome-slugify:一个Python slug化库,可以保持unicode。
    • python-slugify:python slug化库,可以把unicode转化为ASCII.
    • unicode-slugify:一个slug工具,可以生成unicode slugs,需要依赖django。
  • 解析器

特殊文本格式处理

一些用来解析和操作特殊文本格式的库.

  • 通用
    • tablib:一个用来处理中表格数据的模块。
  • 办公室
    • Marmir:把输入的Python数据结构转换为电子表单.
    • openpyxl:一个用来读写Excel2010xlsx/xlsm/xltx/xltm文件的库。
    • pyexcel:一个提供统一接口,用来读写,操作Excel文件的库。
    • python-docx:读取,查询以及修改Microsoft word2007/2008docx文件。
    • python-pptx:可用于创建和修改ppt文件的python库.
    • relatorio:模板化OpenDocument文件。
    • unoconv网址:在libreoffice/openoffice支持的任意文件格式之间进行转换。
    • XlsxWriter:一个用于创建excel.xlsx文件的Python模块。
    • xlwings:一个使得在EXCEL中方便调用Python的库(反之亦然),基于bsd协议.
    • xlwt/xlrd:读写Excel文件的数据和格式信息.
    • docxtpl:通过jjia2模版编辑docx文档.
  • PDF格式
    • PDFMiner:一个用于从pdf文档中抽取信息的工具。
    • PyPDF2:一个可以分割,合并和转换pdf页面的库。
    • ReportLab:快速创建富文本pdf文档。
  • 降价
    • Mistune:快速并且功能齐全的纯Python实现的Markdown解析器。
    • Python-Markdown作者声明:John Gruber‘s Markdown的Python版实现.
    • Python-Markdown2:纯python实现的Markdown解析器,比python-Markdown更快,更准确,可扩展.
  • YAML
    • PyYAML:Python版本的Yaml解析器.
  • CSV
    • csvkit:用于转换和操作csv的工具.
  • 存档
    • unp:一个用来方便解包归档文件的命令行工具。

自然语言处理

用来处理人类语言的库.

  • NLTK:一个先进的平台,用以构建处理人类语言数据的Python程序.
  • gensim:人性化的话题建模库。
  • jieba:中文分词工具。
  • langid.py:独立的语言识别系统。
  • Pattern:Python网络信息挖掘模块。
  • SnowNLP:一个用来处理中文文本的库。
  • TextBlob:为进行普通自然语言处理任务提供一致的接口。
  • TextGrocery书名:一简单高效的短文本分类工具,基于libline和jieba.
  • thulac:清华大学自然语言处理与社会人文计算实验室研制推出的一套中文词法分析工具包。
  • polyglot:支持数百种语言的自然语言处理管道。
  • pytext:基于PyTouch的自然语言模型框架。
  • PyTorch-NLP:一个支持快速深度学习nlp原型研究的工具包.
  • spacy:python和cython中用于工业级自然语言处理的库.
  • Stanza:斯坦福nlp集团的官方python库,支持60多种语言.
  • funNLP:中文自然语言处理的工具和数据集。
  • pkuseg-python:一个支持对不同领域进行中文分词的工具箱。

文档

用以生成项目文档的库.

  • Sphinx:Python文档生成器。
  • MkDocs:对Markdown友好的文档生成器。
  • pdoc:一个可以替换epydoc的库,可以自动生成python库的接口文档。
  • Pycco:文学编程(识字编程)风格的文档生成器。
  • readthedocs书名:一个基于Sphinx/MkDocs的在线文档托管系统,对开源项目免费开放使用.

配置

用来保存和解析配置的库.

  • configlogging模块作者写的分级配置模块.
  • ConfigObj:INI文件解析器,带验证功能。
  • ConfigParser:(Python标准库)ini文件解析器。
  • profig:通过多种格式进行配置,具有数值转换功能。
  • python-decouple:将设置和代码完全隔离。
  • hydra:一个优雅地配置复杂应用程序的框架。

命令行工具

用于创建命令行程序的库.

  • 命令行程序开发
    • cement:Python的命令行程序框架。
    • click:一个通过组合的方式来创建精美命令行界面的包。
    • cliff:一个用于创建命令行程序的框架,可以创建具有多层命令的命令行程序。
    • clint:Python命令行程序工具。
    • docopt:Python风格的命令行参数解析器。
    • Gooey:一条命令,将命令行程序变成一个图形用户界面程序。
    • python-prompt-toolkit:一个用于构建强大的交互式命令行程序的库。
    • python-fire:google出品的一个基于python类的构建命令行界面的库。
    • Pythonpy:在命令行中直接执行任何Python指令.
  • 终端呈现方式
    • asciimatics:跨平台,全屏终端包(即鼠标/键盘输入和彩色,定位文本输出),完整的复杂动画和特殊效果的高级接口。
    • alive-progress:一款新的进度条,具有实时吞吐量信息以及非常酷的动画。
    • colorama:跨平台彩色终端文本。
    • bashplotlib:在终端中进行基本绘图。
    • rich:一个在终端中支持富文本和格式美化的Python库,同时提供了RichHandler日志处理程序.
    • tqdm:一个可在循环和命令行中使用的快速、可扩展的进度条。
  • 生产力工具
    • aws-cli书名:Amazon Web Services的通用命令行界面。
    • caniusepython3:判断是哪个项目妨碍你你移植到Python3.
    • cookiecutter:从Cookiecutters(项目模板)创建项目的一个命令行工具.
    • doitlive:一个用来在终端中进行现场演示的工具。
    • pyftpdlib:一个速度极快和可扩展的Python FTP服务库.
    • howdoi:通过命令行获取即时的编程问题解答。
    • PathPicker:从bash输出中选出文件.
    • percol:向UNIX shell传统管道概念中加入交互式选择功能。
    • thefuck:修正你之前的命令行指令。
    • try:一个极其简单的命令行工具,用来试用Python库.
    • copier:用于呈现项目模板的库和命令行实用程序。
    • Invoke:用于管理面向Shell的子进程,同时支持将可执行的Python代码组织成命令行可调用的状态。
    • tmuxptmux会话管理器.
  • 高级命令行界面
    • httpie:一个命令行http客户端,cURL的替代品,易用性更好。
    • iredis:支持自动补全和高亮显示的redis命令行工具.
    • kube-shell:k8s命令行集成的Shell工具。
    • litecli:支持自动补全和语法高亮的SQLite命令行工具。
    • mycli:支持自动补全和语法高亮的mysql命令行客户端
    • pgcli书名:支持自动补全和语法高亮的postgres命令行工具.
    • SAWS:一个加强版的aws命令行。
    • xonsh:一种基于Python的跨平台,面向unix的外壳语言和命令提示符。

下载器

用来进行下载的库

  • s3cmd:一个用来管理亚马逊S3和云前端的命令行工具。
  • s4cmd:超级S3命令行工具,性能更加强劲。
  • you-get网址:一个youtube/youku/niconico视频下载器,使用python3编写。
  • youtube-dl:一个小巧的命令行程序,用来下载Youtube视频。
  • akshare:为方便人使用而创建的金融数据接口库。

图像处理

用来操作图像的库

  • pillow:Pillow是一个更加易用版的PIL那就是。
  • hmap:图像直方图映射。
  • imgSeek:一个使用视觉相似性搜索一组图片集合的项目。
  • nude.py:裸体检测。
  • python-barcode:不借助其他库在Python程序中生成条形码.
  • pygram:类似instagram的图像滤镜。
  • python-qrcode:一个纯Python实现的二维码生成器.
  • Quads:基于四叉树的计算机艺术。
  • scikit-image:一个用于(科学)图像处理的Python库.
  • thumbor:一个小型图像服务,具有剪裁,尺寸重设和翻转功能。
  • wandMagickWand 的Python绑定.MagickWand是ImageMagick的C接口。
  • face_recognition:简单易用的Python人脸识别库.
  • pagan:基于输入和哈希的复古风图标(头像)生成工具。
  • PyMatting:支持Alpha Matting的库。
  • pywal:由图像生成配色方案的工具。
  • pyvips:低内存消耗且快速的图像处理库。

OCR

光学字符识别库.

音频

用来操作音频的库

  • audiolazy:Python的数字信号处理包。
  • audioread:交叉库(GStreamer+核心音频+MAD+FFmpeg)音频解码。
  • beets:一个音乐库管理工具及MusicBrainz标签添加工具.
  • dejavu:音频指纹提取和识别。
  • django-elastic-transcoder:Django+Amazon Elastic Transcoder那就是。
  • eyeD3:一个用来操作音频文件的工具,具体来讲就是包含id3元信息的mp3文件。
  • id3reader:一个用来读取mp3元数据的python模块。
  • m3u8:一个用来解析m3u8文件的模块。
  • mutagen:一个用来处理音频元数据的Python模块.
  • pydub:通过简单、简洁的高层接口来操作音频文件。
  • pyechonestEcho Nest的Python客户端接口。
  • talkbox:一个用来处理演讲/信号的Python库.
  • TimeSide:开源Web音频处理框架。
  • tinytag:一个用来读取MP3,OGG,FLAC以及WAVE文件音乐元数据的库。
  • mingus:一个高级音乐理论和曲谱包,支持MIDI文件和回放功能。
  • kapre:KERAS音频处理器.
  • librosa:音频音乐分析Python库.
  • matchering:用于音频母带制作的库。
  • pyAudioAnalysis:音频特征提取,分类,分段和应用。
  • beets:一个音乐库管理器和MusicBrainz标记器.

视频

用来操作视频和gif的库.

  • moviepy:一个用来进行基于脚本的视频编辑模块,适用于多种格式,包括动图GIF。
  • scikit-video书名:Scipy视频处理常用程序.
  • vidgear:强大的多线程视频处理框架。

地理位置

地理编码地址以及用来处理经纬度的库.

  • GeoDjango:世界级地理图形Web框架。
  • GeoIP:MaxMind GeoIP Legacy数据库的Python API。
  • geojson:GeoJson的Python绑定及工具.
  • geopy:Python地址编码工具箱。
  • GeoIP2:GeoIP2Webservice客户端与数据库Python API。
  • django-countries:一个django应用程序,提供用于表格的国家选择功能,国旗图标静态文件以及模型中的国家字段.
  • pygeoip:Python GeoIP接口。

HTTP

使用HTTP的库。

  • aiohttp:基于Asyncio的异步http网络库。
  • requests:人性化的HTTP请求库。
  • grequests:Requests库+GEvent,用于异步HTTP请求。
  • httplib2:全面的HTTP客户端库。
  • treq:类似请求的Python API构建于扭曲HTTP客户端之上。
  • urllib3:一个具有线程安全连接池,支持文件POST,清晰友好的HTTP库。
  • httpx:下一代Python HTTP客户端。

数据库

巨蟒实现的数据库。

  • pickleDB:一个简单,轻量级键值储存数据库。
  • PipelineDB:流式sql数据库。
  • TinyDB:一个微型的,面向文档型数据库。
  • ZODB:一个Python原生对象数据库.一个键值和对象图数据库.

数据库驱动

用来连接和操作数据库的库.

  • MySQL:awesome-mysql系列
    • aiomysql:基于Asyncio的异步mysql数据库操作库。
    • mysql-python:python的mysql数据库连接器。
    • ysqlclient:mysql-python分支,支持Python3.
    • oursql:一个更好的mysql连接器,支持原生预编译指令和BLOBS。
    • PyMySQL:纯python mysql驱动,兼容mysql-python.
  • PostgreSQL
    • psycopg2:python中最流行的postgresql适配器.
    • queries:mental copg2库的封装,用来和postgresql进行交互.
    • txpostgres详细说明:基于Twisted的异步PostgreSQL驱动.
  • 其他关系型数据库
    • apsw:另一个Python SQLite封装。
    • 数据集:在数据库中存储Python字典
    • pymssql:一个简单的Microsoft SQL Server数据库接口。
  • Nosql数据库
    • asyncio-redis:基于asyncio的redis客户端(PEP3156)。
    • cassandra-python-driver:Cassandra的Python驱动.
    • HappyBase:一个为Apache HBase设计的,对开发者友好的库。
    • Plyvel详细说明:PythonLevelDB一个快速且功能丰富的的接口。
    • py2neo:Neo4j RESTful接口的Python封装客户端。
    • pycassa:Cassandra的Python Thrift驱动.
    • PyMongo:mongodb的官方python客户端。
    • redis-py:redis的python客户端.
    • telephus书名:基于Twisted的Cassandra客户端.
    • txRedis书名:基于Twisted的Redis客户端.
    • kafka-python:Apache Kafka Python客户端。
  • 异步客户端
    • motor:支持mongodb的异步python驱动程序。

ORM

实现对象关系映射或数据映射技术的库.

  • 关系型数据库
    • Django Models:Django的一部分.
    • SQLAlchemy:Python SQL工具以及对象关系映射工具。
    • awesome-sqlalchemy系列
    • Peewee:一个小巧,富有表达力的orm.
    • PonyORM:提供面向生成器的sql接口的orm.
    • python-sql:编写python风格的sql查询.
    • dataset:在数据库中存储字典,支持SQLite,mysql和postgresql。
    • orator:Orator ORM,提供了一个简单而美观的ActiveRecord实现。
    • orm:一个异步的orm.
    • peewee:一个小但是很有表现力的orm.
    • pony:提供面向生成器的sql接口的orm.
    • pydal:纯Python数据库抽象接口层.
  • Nosql数据库
  • 其他
    • butterdb:Google Drive电子表格的Python ORM.

网络框架

全栈WEB框架.

WebSocket

网页套接字相关库。

  • autobahn-python详细说明:适用于Twisted和Asyncio的Python WebSocket和Wamp.
  • channels:开发者友好的django异步工具.
  • websockets:一个用于构建WebSocket服务器和客户端的库,着重于正确性和简单性。

权限

允许或拒绝用户访问数据或功能的库.

  • Carteblanche:站在用户和设计者角度开发的一个代码对齐模块,很好地处理了代码导航及权限。
  • django-guardian:Django1.2+,实现了单个对象权限。
  • django-rules:一个小巧但是强大的应用,提供对象级别的权限管理,且不需要使用数据库。

CMS

内容管理系统.

  • odoo-cms书名:一个开源的,企业级cms,基于odoo.
  • django-cms书名:一个开源的,企业级CMS,基于Django。
  • djedi-cms书名:一个轻量级但却非常强大的Django CMS,考虑到了插件,内联编辑以及性能.
  • FeinCMS:基于django构建的最先进的内容管理系统之一.
  • Kotti:一个高级的,Python范的Web应用框架,基于金字塔构建。
  • Mezzanine:一个强大的,持续的,灵活的内容管理平台。
  • Opps书名:一个为杂志,报纸网站以及大流量门户网站设计的cms平台,基于django.
  • Plone书名:一个构建于开源应用服务器Zope之上的CMS.
  • Quokka:灵活,可扩展的小型CMS,基于烧瓶和MongoDB。
  • Wagtail:一个django内容管理系统.
  • Widgy书名:最新的cms框架,基于django.
  • indico:一个功能丰富的事件管理系统,由@CERN开发.

电子商务

用于电子商务以及支付的框架和库.

  • django-oscar:一个用于django的开源的电子商务框架.
  • django-shop:一个基于django的店铺系统.
  • Cartridge书名:一个基于Mezzanine构建的购物车应用.
  • shoop:一个基于django的开源电子商务平台.
  • alipay:非官方的Python支付宝接口。
  • merchant:一个可以接收来自多种支付平台支付的django应用.
  • money:一个货币类库。带有可选的CLDR后端本地化格式,提供可扩展的货币兑换解决方案.
  • python-currencies:显示货币格式以及它的数值。
  • forex-python:外汇汇率,比特币价格指数和货币换算。
  • saleor:一款兼容django的电子商务平台.

RESTful API

用来开发REST风格的API的库

  • 姜戈
  • 烧瓶
    • flask-api:为Flask开发的,可浏览WEB API。
    • flask-restful:为Flask快速创建睡觉接口。
    • flask-restless:为SQL AlChemy定义的数据库模型创建REST风格的API。
    • flask-api-utils:为烧瓶处理接口表示和验证。
    • eve:睡觉接口框架,由烧瓶,mongodb等驱动。
  • 金字塔
    • cornice金字塔:一个金字塔的睡觉(Sequoia Capital框架)
  • 与框架无关的
    • falcon:一个用来建立云接口和Web应用程序后端的高性能框架。
    • sandman:为现存的数据库驱动系统自动创建睡觉接口。
    • restless:框架无关的睡觉框架,基于从Tastypie学到的知识。
    • ripozo:快速创建睡觉/HATEOAS/超媒体接口。
    • apistar:专为Python3设计的智能Web API框架。
    • fastapi:一个现代,快速,基于标准python类型注解的的Web框架,可使用python3.6+版本构建接口。
    • hug:一个为纯净公开的接口打造的Python3框架。
    • sandman2:为数据库驱动的系统自动生成睡觉接口。
    • vibora:快速高效且支持异步的WEB框架,灵感来源于烧瓶。

验证

实现验证方案的库.

  • OAuth
    • authlib:一个强大的python库,用来构建oauth和openid服务端。包括:jws,jwk,jwa,jwt。
    • Authomatic:简单但是强大的框架,身份验证/授权客户端。
    • django-allauth:Django的验证应用.
    • django-oauth-toolkit:为Django用户准备的OAuth2.
    • django-oauth2-provider:为Django应用提供OAuth2接入.
    • Flask-OAuthlib:oAuth 1.0/a,2.0客户端实现,供烧瓶使用。
    • OAuthLib:一个OAUTH请求-签名逻辑通用、完整的实现.
    • python-oauth2:一个完全测试的抽象接口。用来创建OAUTH客户端和服务端.
    • python-social-auth:一个设置简单的社会化验证方式。
    • rauth:oAuth1.0/a,2.0,和OFly的Python库。
    • sanction:一个超级简单的OAuth2客户端实现.
  • 其他
    • PyJWT:JSON WEB令牌草案01。
    • python-jws:JSON WEB签名草案02的实现。
    • python-jwt:一个用来生成和验证JSON Web令牌的模块.
    • python-jose:Python版jose实现.

模板引擎

模板生成和词法解析的库和工具.

  • Jinja2:一个现代的,对设计师友好的模板引擎。
  • Chameleon:XMLHTML/一个模板引擎。ZopeZpt(模仿了页面模板),进行了速度上的优化。
  • Genshi:Python模板工具,用以生成Web感知的结果。
  • Mako:Python平台的超高速轻量级模板。

队列

处理事件以及任务队列的库.

  • celery:一个异步任务队列/作业队列,基于分布式消息传递
  • daramatiq:适用于Python3的快速可靠的后台任务处理库.
  • huey:小型多线程任务队列。
  • mrq:一个Python的分布式Worker任务队列,使用redis和gevent。
  • rq:简单的Python作业队列.
  • simpleq:一个简单的,可无限扩张的,基于亚马逊sqs的队列.

搜索

对数据进行索引和执行搜索查询的库和软件.

动态消息

用来创建用户活动的库.

网络资源管理

管理、压缩、缩小网站资源的工具.

  • django-compressor:将链接和内联的javascript或css压缩到一个单独的缓存文件中.
  • django-pipeline:Django的资源包装库.
  • django-storages:一个针对django的自定义存储后端的工具集合.
  • fanstatic:打包、优化,并且把静态文件依赖作为Python的包来提供.
  • File Conveyor:一个后台驻留的程序,用来发现和同步文件到CDNS、S3和FTP。
  • Flask-Assets:帮你将Web资源整合到你的烧瓶应用程序中。
  • jinja-assets-compressor:一个JINJA扩展,用来编译和压缩你的资源.
  • webassets:为你的静态资源打包、优化和管理生成独一无二的缓存url。

缓存

缓存数据的库.

  • Beaker:一个缓存和会话库,可以用在Web应用和独立Python脚本和应用上.
  • django-cache-machine:Django模型的自动缓存和失效.
  • django-cacheops:具有自动颗粒化事件驱动失效功能的orm.
  • django-viewlet:渲染模板,同时具有额外的缓存控制功能。
  • dogpile.cache书名:Cach是的下一代替代品,由同一作者开发.
  • HermesCache详细说明:Python缓存库,具有基于标签的失效和狗皮堆效果保护功能。
  • johnny-cache:Django应用缓存框架.
  • pylibmclibmemcached接口的Python封装.
  • python-diskcache:sqlite和文件支持的缓存后端,具有比memcached和redis更快的查找速度.

电子邮件

用来发送和解析电子邮件的库.

  • django-celery-ses网址:带有AWSES和celery的姜戈电子邮件后端。
  • envelopes:供人类使用的电子邮件库。
  • flanker:一个Email地址和Mime解析库。
  • imbox:Python IMAP库。
  • inbox.py:Python SMTP服务器。
  • inbox:一个开源电子邮件工具箱。
  • lamson:python风格的smtp应用服务器.
  • mailjet:MailJet接口实现,用来提供批量发送邮件,统计等功能。
  • marrow.mailer:高性能可扩展邮件分发框架。
  • modoboa:一个邮件托管和管理平台,具有现代的、简约的WebUI。
  • pyzmail:创建,发送和解析电子邮件。
  • Talon:MailGun库,用来抽取信息和签名.
  • yagmail:yagmail是一个gmail/smtp客户端,旨在使其尽可能简单地发送电子邮件。
  • salmon:一个Python邮件服务器.
  • mailer:一款高性能可扩展的邮件投递框架。

国际化

用来进行国际化的库.

  • Babel:一个Python的国际化库.
  • Korean:一个韩语词态库。
  • PyICU:一个封装了ICUC++Python库的扩展。

url处理

解析URL的库

  • furl:pythonurl一个让处理更简单小型库。
  • purl:一个简单的,不可变的url类,具有简洁的接口来进行询问和处理。
  • pyshorteners:一个纯Python URL缩短库。
  • shorturl:生成短小url和类似bit.ly短链的Python实现。
  • webargs详细说明:一个解析Http请求参数的库,内置对流行Web框架的支持,包括长颈瓶,姜戈,瓶子,龙卷风和金字塔。

超文本标记语言处理

处理HTML和xml的库。

  • BeautifulSoup:以python风格的方式来对html或xml进行迭代,搜索和修改.
  • bleach:一个基于白名单的HTML清理和文本链接库。
  • cssutils:一个Python的css库.
  • html5lib:一个兼容标准的HTML文档和片段解析及序列化库。
  • lxml:一个非常快速,简单易用,功能齐全的库,用来处理HTML和XML.
  • MarkupSafe:为Python实现xml/html/xhtml标记安全字符串。
  • pyquery:一个解析HTML的库,类似jQuery.
  • requests-html:人性化的,Pythonic的HTML解析库。
  • untangle:将xml文档转换为python对象,使其可以方便的访问.
  • xhtml2pdf:html/css转pdf工具.
  • xmltodict:像处理JSON一样处理XML.
  • WeasyPrint:用于html和css的可视化呈现引擎,并可以导出为pdf。
  • xmldataset:简单xml解析.

爬取网络站点的库

  • Scrapy:一个快速高级的屏幕爬取及网页采集框架。
  • ScrapydWeb:一个用于Scrapyd集群管理的全功能Web UI,支持Scrapy日志分析和可视化,自动打包,定时器任务和邮件通知等特色功能。
  • cola:一个分布式爬虫框架。
  • Demiurge:基于PyQuery的爬虫微型框架.
  • feedparser:通用Feed解析器。
  • Grab:站点爬取框架。
  • MechanicalSoup:用于自动和网络站点交互的Python库.
  • portia:Scrapy可视化爬取.
  • pyspider:一个强大的爬虫系统。
  • RoboBrowser:一个简单的,Python风格的库,用来浏览网站,而不需要一个独立安装的浏览器。

网页内容提取

用于进行网页内容提取的库.

  • Haul:一个可以扩展的图像爬取工具。
  • html2text:将HTML转换为Markdown格式文本。
  • lassie:人性化的网页内容检索库。
  • micawber:一个小型网页内容提取库,用来从URL提取富内容。
  • newspaper:使用Python进行新闻提取,文章提取以及内容策展.
  • opengraph:一个用来解析开放内容协议(开放式图形协议)的Python模块。
  • python-goose:html内容/文章提取器(Python2)。
  • goose3:html内容/文章提取器(Python3)。
  • python-readability:arc90公司Readability工具的Python高速端口.
  • sanitize:为杂乱的数据世界带来调理性。
  • sumy:一个为文本文件和HTML页面进行自动摘要的模块。
  • textract:从任何格式的文档中提取文本、Word、PowerPoint、PDF、等等。

表单

进行表单操作的库.

  • Deform:Python HTML表单生成库,受到了Formish表单生成库的启发。
  • django-bootstrap3:集成了Bootstrap 3的Django。
  • django-bootstrap4:集成了Bootstrap 4的Django.
  • django-crispy-forms:一个Django应用,他可以让你以一种非常优雅且Dry(不要重复自己)的方式来创建美观的表单。
  • django-remote-forms:一个平台独立的django表单序列化工具.
  • WTForms:一个灵活的表单验证和呈现库。
  • WTForms-JSON:一个WTForms扩展,用来处理Json数据.

数据验证

数据验证库.多用于表单验证.

  • Cerberus:一个映射验证器(映射-验证器)。支持多种规则,提供归一化功能,可以方便地定制为Python风格的架构定义。
  • colander:HTMLXML,JSON,一个用于对从表单获取的数据或其他同样简单的序列化数据进行验证和反序列化的系统。
  • kmatch:一种用于匹配/验证/筛选Python字典的语言.
  • schema:一个用于对Python数据结构进行验证的库.
  • Schematics:数据结构验证。
  • valideer:轻量级可扩展的数据验证和适配库。
  • voluptuous:一个Python数据验证库.主要是为了验证传入Python的JSON,YAML等数据。
  • jsonschemaJSON Schema的Python实现,用于Json数据的验证。

序列化

复杂数据类型序列化相关库.

反垃圾技术

帮助你和电子垃圾进行战斗的库.

标记

用来进行标记的库.

管理面板

管理界面库.

  • Ajenti:一个你的服务器值得拥有的管理面板。
  • django-suit:django管理界面的一个替代品(仅对于非商业用途是免费的)。
  • django-xadmin:django admin的一个替代品,具有很多不错的功能。
  • flask-admin:一个用于烧瓶的简单可扩展的管理界面框架.
  • flower书名:一个对Celery集群进行实时监控和提供Web管理界面的工具.
  • Grappelli:Django管理界面的一个漂亮的皮肤.
  • Wooey:一个django应用,可以为python脚本创建Web用户界面.
  • django-grappelli:拥有绚丽外观的Django Admin界面。
  • django-jet:具有改进功能的现代响应式django管理界面模板.
  • jet-bridge:管理面板框架,适用于任何具有良好UI的应用(例如django)。

无服务器框架

使用Python开发无服务器模型相关的库。

  • python-lambda简介:在AWS Lambda开发和部署Python代码的工具包.
  • Zappa:在AWSLambda和应用编程接口网关部署WSGI应用的工具。

静态站点生成器

静态站点生成器是一个软件,它把文本和模板作为输入,然后输出超文本标记语言文件。

  • Pelican:使用Markdown或睡觉来处理内容,金佳2来制作主题。支持DVCS,Disqus..agpl许可.
  • Cactus:为设计师设计的静态站点生成器。
  • Hyde:基于jjia2的静态站点生成器.
  • Nikola:一个静态网站和博客生成器。
  • Tinkerer:Tinkerer是一个博客引擎/静态站点生成器,由Sphinx驱动.
  • Lektor:一个简单易用的静态CMS和博客引擎.
  • makesite:简单轻量的站点/博客生成器(小于130行代码)。

进程

操作系统进程启动及通信库.

并发和并行

用以进行并发和并行操作的库.

  • multiprocessing:(Python标准库)基于进程的“线程”接口.
  • threading:(Python标准库)更高层的线程接口.
  • eventlet:支持wsgi的异步框架.
  • gevent:一个基于协程的Python网络库,使用greenlet那就是。
  • Tomorrow:用于产生异步代码的神奇的装饰器语法实现。
  • uvloop:在libuv之上超快速实现Asyncio事件循环.
  • concurrent.futures:(Python标准库)异步执行可调用对象的高级接口.
  • gevent:使用greenlet且基于协程的Python网络库.
  • scoop:支持在Python中进行可伸缩并行操作.

网络

用于网络编程的库.

  • asyncio:(Python标准库)异步I/O,事件循环,协程以及任务.
  • trio:异步并发和I/O友好的库。
  • Twisted:一个事件驱动的网络引擎。
  • pulsar:事件驱动的并发框架。
  • diesel:基于Greenlet的事件I/O框架。
  • pyzmq:一个ZeroMQ消息库的Python封装。
  • Toapi:一个轻巧,简单,快速的烧瓶库,致力于为所有网站提供接口服务。
  • txZMQ详细说明:基于Twisted的ZeroMQ消息库的Python封装.

WebSocket

帮助使用WebSocket的库。

Wsgi服务器

兼容wsgi的Web服务器

  • gunicorn:Pre-Forked,部分是由C语言编写的。
  • uwsgi:uwsgi项目的目的是开发一组全栈工具,用来建立托管服务,由C语言编写.
  • bjoern:异步,非常快速,由C语言编写.
  • fapws3:异步(仅对于网络端),由C语言编写.
  • meinheld:异步,部分是由C语言编写的.
  • netius:异步,非常快速。
  • paste:多线程,稳定,久经考验。
  • rocket:多线程。
  • waitress:金字塔金字塔多线程,是它驱动着框架.
  • Werkzeug书名:一个Wsgi工具库,驱动着烧瓶,而且可以很方便大嵌入到你的项目中去。

Asgi服务器

兼容ASGI的Web服务器。

  • daphne:用于ASGI和ASGI-HTTPHTTPHTTP,的,支持和WebSocket协议的服务器。
  • uvicorn:使用uvloop和httptools实现的闪电般快速的aski服务器。

rpc服务器

兼容rpc的服务器。

密码学

  • cryptography:这个软件包意在提供密码学基本内容和方法提供给Python开发者.
  • hashids:在Python中实现hashids那就是。
  • Paramiko:SSHv2Python(2.6+,3.3+),协议的,提供客户端和服务端的功能.
  • Passlib:安全密码存储/哈希库。
  • PyCrypto:Python密码学工具箱。
  • PyNacl:网络和密码学(Nacl)库的python绑定.

图形用户界面

用来创建图形用户界面程序的库.

  • curses:内建的ncurses封装,用来创建终端图形用户界面.
  • enaml:使用类似Qml的Declaratic语法来创建美观的用户界面.
  • kivy:一个用来创建自然用户交互(用户界面)应用程序的库,可以运行在windows,linux,mac OS X,android以及iOS平台上。
  • pyglet:一个Python的跨平台窗口及多媒体库.
  • PyQt:跨平台用户界面框架Qt的Python绑定,支持Qt v4和Qt v5。
  • PySide:跨平台用户界面框架Qt的Python绑定,支持Qt v4。
  • Tkinter:tkinter是Python GUI的一个事实标准库.
  • Toga:一个Python原生的,操作系统原生的图形用户界面工具包。
  • urwid:一个用来创建终端图形用户界面应用的库,支持组件,事件和丰富的色彩等。
  • wxPython:wxPython是wxWidgets C++类库和Python语言混合的产物。
  • PyGObject:Glib/gobject/gio/gtk+(gtk+3)的Python绑定。
  • Flexx详细说明:Flexx是一个纯Python语言编写的用来创建图形用户界面程序的工具集,它使用Web技术进行界面的展示。
  • Eel:用于制作简单离线超文本标记语言/JS图形用户界面应用的库。
  • PySimpleGUI:tkinter,qt,wxPython和remi的封装。
  • pywebview:围绕网页视图组件的轻量级跨平台的原生包装。
  • DearPyGui:一个简单的可使用GPU加速的Python GUI框架。

游戏开发

超赞的游戏开发库.

  • Cocos2d:Cocos2D是一个用来开发2D游戏,示例和其他图形/交互应用的框架。基于侏儒。
  • Panda3D:由迪士尼开发的3D游戏引擎,并由卡内基梅陇娱乐技术中心负责维护。使用C++编写,针对Python进行了完全的封装。
  • PygamePYGAME是一组PYTHON模块,用来编写游戏.
  • PyOgre:OGRE 3D渲染引擎的Python绑定,可以用来开发游戏和仿真程序等任何3D应用。
  • PyOpenGL:opengl的python绑定及其相关接口。
  • PySDL2:sdl2库的封装,基于cypes。
  • RenPy:一个视觉小说(视觉小说)引擎。
  • Arcade:一个现代Python框架,用于制作具有引人入胜的图形与声音的游戏.
  • Harfang3D:支持3D,VR与游戏开发的Python框架。

日志

用来生成和操作日志的库.

  • logging:(python标准库)为python提供日志功能.
  • logbook:记录库的替代品。
  • Eliot:为复杂的和分布式系统创建日志。
  • Raven:Secry的Python客户端.
  • Sentry:实时记录和收集日志的服务器。
  • sentry-python:python版哨兵sdk。
  • loguru:旨在带来愉悦体验的Python日志库.
  • structlog:结构化日志,让日志变得简单。

测试

进行代码库测试和生成测试数据的库.

  • 测试框架
    • unittest:(Python标准库)单元测试框架.
    • nose:Nose扩展了Unittest的功能。
    • nose2nose的继任者,基于unittest2那就是。
    • contexts:一个Python3.3+的BDD框架。受到C#机器.Specification的启发.
    • hypothesis假设:是一个基于先进的QuickCheck风格特性的测试库。
    • mamba:Python的终极测试工具,拥护bdd。
    • pyshould:应该是风格的断言,基于吗?PyHamcrest那就是。
    • pytest:一个成熟的全功能Python测试工具.
    • green:干净,多彩的测试工具。
    • pyvows:bdd风格的测试工具,受Vows.js的启发。
    • Robot Framework:一个通用的自动化测试框架。
    • tox:自动化测试与发布的工具,支持多个Python版本.
  • GUI/WEB测试
    • SeleniumSeleniumWebDriver的Python绑定。
    • PyAutoGUI:PyAutoGUI是一个人性化的跨平台图形用户界面自动测试模块。
    • locust:使用Python编写的,可扩展的用户加载测试工具.
    • sixpack:一个和语言无关的A/B测试框架。
    • splinter:开源的Web应用测试工具。
    • Schemathesis:基于属性的自动测试工具,用于测试使用开放接口/swagger规范构建的WEB应用程序。
  • 模拟测试
    • mock:(Python标准库)一个用于伪造测试的库.
    • doublex:Python的一个功能强大的是测试框架的两倍。
    • freezegun:通过伪造日期模块来生成不同的时间。
    • httmock:针对Python2.6+和3.2+生成伪造请求的库。
    • httpretty:python的http请求模拟工具。
    • responses:伪造Python中的请求库的一个通用库。
    • VCR.py:在你的测试中记录和重放HTTP交互。
    • mocket:gevent/asyncio/ssl支持的套接字模拟框架。
  • 对象工厂
    • factoryboy:一个Python用的测试固件(测试装置)替代库。
    • mixer:另外一个测试固件(测试夹具)替代库,支持姜戈,烧瓶,SQL炼金术,Peewee等。
    • modelmommy:为django测试创建随机固件.
  • 代码覆盖率
    • coverage:代码覆盖率测量。
    • Codecov:一个代码覆盖率测试工具,为开源项目提供免费代码覆盖率测试服务。
  • 伪数据
    • faker:一个Python库,用来生成伪数据.
    • fake2db:伪数据库生成器。
    • mimesis:一个帮助你生成伪数据的Python库.
    • radar:生成随机的日期/时间。
  • 错误处理
    • FuckIt.py:使用最先进的技术来保证你的Python代码无论对错都能继续运行.

渗透测试

渗透测试相关框架和工具.

  • fsociety:一款渗透测试框架。
  • setoolkit:社会工程工具包。
  • sqlmap:自动sql注入和数据库接管工具。

代码分析和Lint工具

进行代码分析、解析和操作代码库的库和工具.

  • 代码分析
    • coala:语言独立和易于扩展的代码分析应用程序。
    • code2flow:把你的python和javascript代码转换为流程图.
    • pycallgraph:这个库可以把你的Python应用的流程(调用图)进行可视化.
    • pysonar2:Python类型推断和检索工具。
    • prospector:分析Python代码的工具.
    • vulture:用于发现和分析无效Python代码的工具.
  • 皮棉工具
    • Flake8:模块化源码检查工具,提供与pycodestylepyflakes、McCabe相关的装饰器.
    • Pylint:一个完全可定制的源码分析器。
    • YAPF:google的python代码格式化工具。
    • pylama:python和javascript的代码审查工具。
    • wemake-python-styleguide:有史以来最严格的Python代码审查工具.
  • 代码格式化
    • autopep8:自动格式化Python代码,以使其符合PEP8规范.
    • black:一个坚定的Python代码格式化工具.
    • isort:用于纠正包导入顺序的Python库.
  • 静态类型检查,也可以参考awesome-python-typing
    • mypy:在编译期间检查变量类型。
    • pyre-check:性能类型检查。
    • typeshed:带有静态类型的Python库存根的集合.
  • 静态类型注释生成器
    • MonkeyType:通过收集运行时的类型来为Python生成静态类型注释的系统.
    • pyannotate:自动生成符合pep-484的注解。
    • pytype:检查和推断Python代码中的类型,无需添加注解.

调试工具

用来进行代码调试的库.

  • 调试器
    • ipdb:ipython启用的pdb那就是。
    • pudb:全屏,基于控制台的Python调试器.
    • pdb++:另一种pdb的替代.
    • pyringe:可以在Python进程中附加和注入代码的调试器.
    • wdb:一个奇异的Web调试器,通过WebSockets工作。
    • winpdb:一个具有图形用户界面的Python调试器,可以进行远程调试,基于rpdb2.
  • 追踪器
    • lptrace:为Python程序打造的strace那就是。
    • manhole:调试Unix套接字连接,并显示所有线程的堆栈跟踪和交互式提示。
    • pyringe:能够附加到python进程并将代码注入python进程的调试器.
    • python-hunter:一个灵活的代码追踪工具包。
  • 性能分析器
  • 其他

科学计算和数据分析

用来进行科学计算和数据分析的库.

  • astropy:一个天文学Python库.
  • bcbio-nextgen:这个工具箱为全自动高通量测序分析提供符合最佳实践的处理流程。
  • bccb:生物分析相关代码集合。
  • Biopython:Biopython是一组可以免费使用的用来进行生物计算的工具.
  • blaze:NumPy和Pandas的大数据接口.
  • cclib:一个用来解析和解释计算化学软件包输出结果的库。
  • NetworkX:一个为复杂网络设计的高性能软件。
  • Neupy:执行和测试各种不同的人工神经网络算法。
  • NumPy:使用Python进行科学计算的基础包.
  • Open Babel:一个化学工具箱,用来描述多种化学数据。
  • Open Mining:使用Python挖掘商业情报(BI)(Pandas Web接口)。
  • orange:通过可视化编程或Python脚本进行数据挖掘,数据可视化,分析和机器学习.
  • Pandas:提供高性能,易用的数据结构和数据分析工具。
  • PyDy简介:是的缩写,用来为动力学运动建模工作流程提供帮助,基于和matplotlib.
  • PyMC:马尔科夫链蒙特卡洛采样工具。
  • RDKit:化学信息学和机器学习软件。
  • SciPy:由一些基于python,用于数学,科学和工程的开源软件构成的生态系统.
  • statsmodels:统计建模和计量经济学。
  • SymPy:一个用于符号数学的Python库.
  • zipline:一个Python算法交易库.
  • Bayesian-belief-networks:优雅的贝叶斯理念网络框架。
  • AWS Data Wrangler:aws平台上使用的熊猫。
  • Optimus:在使用PySpark时,让敏捷数据科学工作流程变得简单.
  • Colour:大量色彩理论转换和算法的实现。
  • Karate Club:用于图形结构化数据的无监督机器学习工具箱。
  • NIPY:神经影响学工具箱集合。
  • ObsPy:地震学Python工具箱.
  • QuTiP:Python版Quantum工具箱.
  • SimPy:一个基于过程的离散事件模拟框架。

数据可视化

进行数据可视化的库.参见:awesome-javascript那就是。

  • matplotlib:一个Python2D绘图库。
  • bokeh:用Python进行交互式Web绘图。
  • ggplot:ggplot2给R提供的接口的python版本。
  • plotly:协同python和matplotlib工作的Web绘图库。
  • pyecharts书名:基于百度Echarts的数据可视化库.
  • pygal:一个Python SVG图表创建工具.
  • pygraphviz:Graphviz的Python接口.
  • PyQtGraph:交互式实时2D/3D/图像绘制及科学/工程学组件。
  • SnakeViz:一个基于浏览器的PythoncProfile模块输出结果查看工具。
  • vincent:把python转换为织女星语法的转换工具.
  • VisPy:基于opengl的高性能科学可视化工具.
  • Altair:用于Python的声明式统计可视化库.
  • bqplot书名:Jupyter Notebook的交互式绘图库.
  • Cartopy:具有matplotlib支持的python制图库.
  • Dash书名:构建在flask、Reaction和Ploly之上,旨在用于分析WEB应用程序.
  • diagrams:用图表作为代码。
  • plotnine:基于ggplot2的python图形语法。
  • PyGraphvizGraphviz的Python接口.
  • Seaborn:使用Matplotlib进行统计数据可视化.

计算机视觉

计算机视觉相关库.

  • OpenCV:开源计算机视觉库。
  • pyocr:Tesseract和楔形的包装库.
  • pytesseractGoogle Tesseract OCR的另一包装库.
  • SimpleCV:一个用来创建计算机视觉应用的开源框架。
  • EasyOCR:支持40多种语言的即用型光学字符识别。
  • Face Recognition:简单的面部识别库。
  • Kornia:Pytorch的开源差异化计算机视觉库.
  • tesserocr:另一个简单的,兼容枕头的tesseract-ocr装饰器,可用于ocr接口。

深度学习

神经网络和深度学习相关框架.也可以参考awesome-deep-learning那就是。

  • Caffe:一个Caffe的Python接口.
  • Caffe2:一个轻量级的,模块化的,可扩展的深度学习框架。
  • keras:以TensorFlow/THEANO/CNTK为后端的深度学习封装库,快速上手神经网络.
  • MXNet:一个高效和灵活的深度学习框架。
  • Pytorch:一个具有张量和动态神经网络,并有强大图形处理器加速能力的深度学习框架。
  • SerpentAI:游戏代理框架,可使用任意视频游戏作为深度学习沙箱。
  • Theano:一个快速数值计算库。
  • TensorFlow:谷歌开源的最受欢迎的深度学习框架。
  • skflow:一个TensorFlow的简化接口(模仿科学工具包-学习)。
  • hebel:gpu加速的深度学习库。
  • pydeep:Python深度学习库。

机器学习

机器学习相关库,也可以参考awesome-machine-learning那就是。

  • Crab:灵活、快速的推荐引擎。
  • NuPIC:智能计算numenta平台.
  • pattern:Python网络挖掘模块。
  • PyBrain:另一个Python机器学习库.
  • Pylearn2:一个基于Theano的机器学习库.
  • python-recsys:一个用来实现推荐系统的Python库.
  • scikit-learn书名:基于Science Py构建的机器学习Python模块.
  • vowpalporpoise:轻量级Vowpal Wabbit的Python封装.
  • gym:开发和比较强化学习算法的工具包。
  • H2O:开源快速可扩展的机器学习平台。
  • Metrics:机器学习的评估指标。
  • vowpal_porpoise:Python版Vowpal Wabbit装饰器.
  • xgboost:可扩展,便携式和分布式梯度提升库。
  • MindsDB:MindsDB是现有数据库的开源AI层,可让使用标准查询轻松地进行开发,训练和部署最新的机器学习模型。

推荐系统

用于构建推荐系统的相关库.

  • annoy:对C++/Python实现的近似近邻算法进行了内存优化。
  • fastFM:因式分解机相关库。
  • implicit:对隐式数据集进行协作过滤的快速Python实现.
  • libffm:场感知因式分解机器(Ffm)相关库。
  • lightfm:很多流行的推荐算法的Python实现.
  • spotlight书名:使用pytorch实现的深度推荐模型.
  • Surprise:用于构建和分析推荐系统的科学工具。
  • tensorrec:TensorFlow的推荐引擎框架。

分布式计算

分布式计算相关的框架和库.

  • dpark:电光的Python克隆版,一个类似MapReduce的框架。
  • dumbo:这个python模块可以让人轻松的编写和运行hadoop程序。
  • luigi:这个模块帮你构建批处理作业的复杂流水线。
  • mrjob:在hadoop或亚马逊网络服务上运行MapReduce任务。
  • dask:用于分析计算的灵活的并行计算库。
  • PySpark:电光的Python接口。
  • Ray:一个用于并行和分布式Python的系统,它统一了机器学习生态系统.
  • faust:一个Python流处理库,核心思想来源Kafka Streams那就是。
  • streamparse:运行针对事实数据流的Python代码.集成了Apache Storm那就是。

函数式编程

使用Python进行函数式编程.

  • CyToolz:Toolz的cython实现:高性能函数式工具.
  • fn.py:在Python中进行函数式编程:实现了一些享受函数式编程缺失的功能.
  • funcy:炫酷又实用的函数式工具。
  • Toolz:一组用于迭代器,函数和字典的函数式编程工具。
  • Coconut:为了简单、优雅、更Pythonic的函数式编程而构建的Python变体.
  • more-itertools:比itertools拥有更多的可迭代对象的操作方式.
  • returns:一个类型安全的单元、转换器与合成工具集合。

第三方接口

用来访问第三方接口的库。参见:List of Python API Wrappers and Libraries那就是。

DevOps工具

用于设备运维的软件和库。

  • Ansible:一个非常简单的IT自动化平台。
  • SaltStack:基础设施自动化和管理系统。
  • OpenStack:用于构建私有和公有云的开源软件。
  • Docker Compose书名:快速,分离的开发环境,使用DOCKER.
  • Fabric:一个简单的,Python风格的工具,用来进行远程执行和部署。
  • cuisine:为Fabric提供一系列高级函数。
  • Fabtools:一个用来编写超赞的Fabric文件的工具。
  • gitapi:GIT的纯Python API。
  • hgapi:Mercurial的纯Python API。
  • honchoForeman的Python克隆版,用来管理基于Procfile的应用.
  • pexpect:在一个伪终端中控制交互程序,就像GNU期望一样。
  • psutil:一个跨平台进程和系统工具模块。
  • supervisor:UNIX的进程控制系统。
  • cloudinit:一个多分发包,用于处理云实例的早期初始化。
  • pyinfra:一个通用的cli工具包和python库,用于自动化的基础设施。
  • honchoForeman的Python克隆版,用于管理基于Procfile的应用。
  • BorgBackup:具有压缩和加密功能的重复数据删除存档器。
  • docker-compose:使用Docker的快速独立的开发环境.

任务调度

任务调度库.

  • APScheduler:轻巧但强大的进程内任务调度,使你可以调度函数。
  • django-schedule:一个django排程应用.
  • doit:一个任务执行和构建工具。
  • gunnery:分布式系统使用的多用途任务执行工具,具有Web交互界面。
  • Joblib:一组为Python提供轻量级作业流水线的工具.
  • Plan:如有神助地编写crontab文件。
  • schedule:人性化的Python任务调度库.
  • Spiff:使用纯Python实现的强大的工作流引擎.
  • TaskFlow:一个可以让你方便执行任务的Python库,一致并且可靠.
  • Airflow:是一个工作流分配管理系统,通过有向非循环图的方式管理任务流程,设置任务依赖关系和时间调度。
  • Prefect:一个现代的工作流程编排框架,使构建、计划和监视健壮的数据管道变得容易。

外来函数接口

使用外来函数接口的库.

  • cffi:用来调用C代码的外来函数接口.
  • ctypes:(Python标准库)用来调用C代码的外来函数接口.
  • PyCUDA:nVIDIA CUDA接口的封装。
  • SWIG:简化的封装和接口生成器。

重构

巨蟒重构相关库和工具。

高性能

让Python更快的库.

  • Cython:优化的Python静态编译器.使用类型混合使Python编译成C或C++模块来获得性能的极大提升。
  • CLPython:用Common Lisp编写的Python编程语言的实现。
  • Grumpy:编译器比解释器更强大的cpython2.7替代品(阿尔法)。
  • IronPython:用C#编写的Python编程语言的实现.
  • Jython:为jvm用java编写的python编程语言的实现。
  • MicroPython:精简高效的Python编程语言实现.
  • Pyjion:基于内核CLR的Python JIT。
  • Numba:Python JIT(Just In Time)编译器,针对科学用的Python,由Cython和NumPy的开发者开发。
  • PeachPy:嵌入python的x86-64汇编器。可以被用作Python内联的汇编器或者是独立的汇编器,用于windows、linux、OS X、Native Client或者Go。
  • PyPy:使用python实现的python.解释器使用黑魔法加快Python运行速度且不需要加入额外的类型信息.
  • Pyston:使用llvm和现代jit技术构建的python实现,目标是为了获得很好的性能.
  • Stackless Python:一个强化版的python。

微软的Windows平台

在Windows平台上进行Python编程。

  • Python(x,y):面向科学应用的Python发行版,基于Qt和Spyder.
  • pythonlibs:非官方的视窗平台Python扩展二进制包.
  • PythonNet:Python与.NET公共语言运行库(Clr)的集成。
  • PyWin32:针对视窗的Python扩展.
  • WinPython:Windows 7/8系统下便携式开发环境。

网络可视化和SDN

用来进行网络可视化和SDN(软件定义网络)的工具和库.

  • Mininet:一款流行的网络模拟器以及用Python编写的接口。
  • POX:一个针对基于Python的软件定义网络应用(例如OpenFlow SDN控制器)的开源开发平台.
  • Pyretic:火热的sdn编程语言中的一员,为网络交换机和模拟器提供强大的抽象能力.
  • SDX Platform:基于sdn的ixp实现,影响了Mininet,POX和高热。
  • NRU:一个基于组件的软件定义网络框架。
  • napalm:可跨供应商接口来操纵网络设备。

硬件

用来对硬件进行编程的库.

  • ino:操作Arduino的命令行工具.
  • Pyro:Python机器人编程库。
  • PyUserInput:跨平台的,控制鼠标和键盘的模块。
  • scapy:一个非常棒的操作数据包的库。
  • wifi:一个python库和命令行工具用来在linux平台上操作WIFI。
  • Pingo:Pingo为类似Raspberry PI,pcDuino,英特尔伽利略等设备提供统一的应用编程接口用以编程。
  • keyboard:在Windows和LINUX上挂钩并模拟全局键盘事件.
  • mouse:在Windows和LINUX上挂钩并模拟全局鼠标事件.

兼容性

帮助从Python 2向Python 3迁移的库。

  • Python-Future:这就是python2和python3之间丢失的那个兼容性层。
  • Six:Python 2和3的兼容性工具。
  • modernize:使Python代码更加现代化以便最终迁移到Python3.

算法和设计模式

数据结构、算法和设计模式的Python实现.也可以参考awesome-algorithms那就是。

  • 算法
  • 设计模式
    • PyPattyrn:一个简单而有效的库,用于实现常见的设计模式。
    • python-patterns:一个Python设计模式集合.
    • transitions:轻量级的,面向对象的有限状态机实现。

内置类的增强版实现

一些Python内置类的增强版实现库.

  • attrs:一个在类定义时可替换__init____eq____repr__等方法的样板.
  • bidict:高效的Pythonic的双向映射数据结构和相关功能.
  • Box:具有高级点符号访问权限的Python字典.
  • dataclasses:(Python标准库)数据类.
  • DottedDict:提供一种使用点路径符号访问列表和字典的方法的库。

机器人

机器人相关库.

  • PythonRobotics:各种具有可视化效果的机器人算法的汇总。
  • rospy:ROS(机器人操作系统)库。

聊天工具

聊天机器人开发相关的库.

  • errbot:实现ChatOps的最简单最受欢迎的聊天机器人。

编辑器插件和集成开发环境

  • Emacs
    • elpy:Emacs Python开发环境。
  • 崇高的文本
    • anaconda巨蟒可将功能齐全的Python开发集成开发环境转换为崇高文本3。
    • SublimeJEDI:一个很棒的自动补全库Jedi的Sublime Text插件.
  • VIM
    • jedi-vim:用于Python的Jedi自动补全库的Vim绑定.
    • python-mode:一个将Vim转换为Python IDE的多合一插件.
    • YouCompleteMe:包含Jedi补全的Python引擎.
  • Visual Studio
    • PTVS:visual Studio Python工具。
  • Visual Studio代码
    • Python:对Python有丰富支持的官方VScode扩展。
  • IDE
    • PyCharm详细说明:JetBrains提供的商业Python IDE,也有免费的社区版。
    • spyder:开源Python IDE。

企业级应用集成

企业级环境中用于集成的平台与工具.

  • Zato:esb,soa,睡觉,API以及云的python整合。

图形QL

GraphQL相关库。

  • graphene:Python GraphQL框架。
  • tartiflette-aiohttp:tartiflette的基于aiohttp的装饰器,用于通过http公开GraphQL API。
  • tartiflette-asgi:Tartiflette GraphQL引擎的ASGI支持.
  • tartiflette:支持Python3.6+和Asyncio的SDL优先的GraphQL引擎实现.

杂项

不属于上面任何一个类别,但是非常有用的库.

  • blinker:快速的Python运行时信号/事件分配系统.
  • boltons:一组纯Python实用工具.
  • itsdangerous:将受信任的数据传递到不受信任的环境的帮助工具。
  • magenta:使用人工智能生成音乐与艺术的工具。
  • pluginbase:一个简单但灵活的Python插件系统.
  • tryton:一个通用业务框架。