DevWeekly/docs/25-pyhubweekly.md

190 lines
6.6 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

## 前言
PyHubWeekly每周定期更新精选GitHub上优质的Python项目/小工具。
我把PyHubWeekly托管到了Github感兴趣的可以**搜索Github项目**[PyHubWeekly](https://github.com/Jackpopc/PyHubWeekly)如果喜欢麻烦给个Star支持一下吧。此外**欢迎大家通过提交issue来投稿和推荐自己的项目**~
本期为大家推荐GitHub上5个优质的Python项目它们分别是
- **txtai**
- **Orchest**
- **watchdog**
- **Gitutor**
- **DearPyGui**
下面分别来介绍一下上述5个GitHub项目。
### txtai
**Star262**
[txtai](https://github.com/neuml/txtai)是一款基于AI在文本上建立索引的工具能够把相似的文本关联在一起用于内容搜索。
例如,搜索**feel good story**,它能够根据索引相似性返回**Maine man wins 25 lottery ticket**。
搜索**health**,它能够返回**US tops 5 million confirmed virus cases**。
**安装**
可以通过`pip`命令轻松安装txtai
```
$ pip install txtai
```
**示例**
首先需要创建Embeddings实例它是txtai的主要入口点。Embeddings实例定义了用于标记文本部分并将其转换为嵌入向量的方法。
```
from txtai.embeddings import Embeddings
```
下面就演示如何用Embeddings搜索相似概念
```Python
import numpy as np
sections = ["US tops 5 million confirmed virus cases",
"Canada's last fully intact ice shelf has suddenly collapsed, forming a Manhattan-sized iceberg",
"Beijing mobilises invasion craft along coast as Taiwan tensions escalate",
"The National Park Service warns against sacrificing slower friends in a bear attack",
"Maine man wins $1M from $25 lottery ticket",
"Make huge profits without work, earn up to $100,000 a day"]
print("%-20s %s" % ("Query", "Best Match"))
print("-" * 50)
for query in ("feel good story", "climate change", "health", "war", "wildlife", "asia", "north america", "dishonest junk"):
# Get index of best section that best matches query
uid = np.argmax(embeddings.similarity(query, sections))
print("%-20s %s" % (query, sections[uid]))
```
输出结果:
```
Query Best Match
--------------------------------------------------
feel good story Maine man wins $1M from $25 lottery ticket
climate change Canada's last fully intact ice shelf has suddenly collapsed, forming a Manhattan-sized iceberg
health US tops 5 million confirmed virus cases
war Beijing mobilises invasion craft along coast as Taiwan tensions escalate
wildlife The National Park Service warns against sacrificing slower friends in a bear attack
asia Beijing mobilises invasion craft along coast as Taiwan tensions escalate
north america US tops 5 million confirmed virus cases
dishonest junk Make huge profits without work, earn up to $100,000 a day
```
### Orchest
**Star222**
[Orchest](https://github.com/orchest/orchest)是一款用于创建数据科学工作量的工具。
Orchest是一款Web数据科学工具可在文件系统上运行。使用Orchest你可以实现如下功能
- 通过其可视界面构建数据科学工作流
- 自动并行运行工作流
- 在你喜欢的编辑器中开发代码
- ...
orchest的使用依赖Docker所以如果你想要尝试需要首先安装和配置Docker。
```
$ git clone https://github.com/orchest/orchest.git
$ cd orchest
$ ./orchest.sh start
```
![ezgif.com-optimize](https://gitee.com/sharetech_lee/blogimg/raw/master/imgs/ezgif.com-optimize.gif)
### watchdog
**Star4.2k**
[watchdog](https://github.com/gorakhargosh/watchdog)是一款用于监控系统事件的Python工具它在Python代码中和命令行下都可以使用。
首先来看一下在Python中以API方式使用系统事件监控
```
import sys
import time
import logging
from watchdog.observers import Observer
from watchdog.events import LoggingEventHandler
if __name__ == "__main__":
logging.basicConfig(level=logging.INFO,
format='%(asctime)s - %(message)s',
datefmt='%Y-%m-%d %H:%M:%S')
path = sys.argv[1] if len(sys.argv) > 1else'.'
event_handler = LoggingEventHandler()
observer = Observer()
observer.schedule(event_handler, path, recursive=True)
observer.start()
try:
whileTrue:
time.sleep(1)
except KeyboardInterrupt:
observer.stop()
observer.join()
```
再看一下命令行下使用下面这个示例忽略无关的文件只监控和py和txt相关的事件
```
watchmedo log \
--patterns="*.py;*.txt" \
--ignore-directories \
--recursive \
.
```
### Gitutor
**Star6**
[Gitutor](https://github.com/artemisa-mx/gitutor)是一款用Python开发让git命令更加简单的工具。
git是项目开发过程中经常会用到的一种工具它用于代码的版本控制。
但是,对于初学者它不是特别友好,代码提交、版本回退、代码比较...
而Gitutor让你通过一行命令就可以轻松实现代码版本控制让git的门槛进一步被拉低。
**安装**
```
$ pipx install gitutor
```
然后,使用`gt --help`命令就可以查看能够使用的命令:
- `gt init`:初始化本地和远程仓库
- `gt save`:把代码变动保存到本地和远程仓库
- `gt goback`回退到前一个commit
- `gt compare`对比当前状态和前一个commit
- `gt ignore`:忽略选中的文件
- `gt lesson`阅读gitutor文档
### DearPyGui
**Star273**
[DearPyGui](https://github.com/hoffstadt/DearPyGui)是一个易于使用且功能强大的Python GUI框架它提供了DearImGui的包装。
它与其他Python GUI框架从根本上存在不同在后台DearPyGui使用即时模式范式这样能够实现更加灵活的动态界面。此外DearPyGui不使用本机窗口小部件而是使用计算机的GPU绘制窗口小部件它支持如下平台
- **Windows 10**
- **macOs**
- **Linux**
DearPyGui提供与DearImGui相同的方式为游戏开发人员提供了一种创建工具的简单方法DearPyGui提供了一种简单的方法为Python开发人员创建快速而强大的GUI。
---
给大家推荐1个宝藏公众号【**七步编程**】专注于Python、AI、大数据领域内容分享。创作内容坚持原创与高质量发表内容已经被诸多公众号大V转发备受欢迎。现在关注后台回复关键**567**就可以获得我精心整理的机器学习、深度学习、Python、推荐系统等技术方向的干货
![image-20200829151145405](https://gitee.com/sharetech_lee/blogimg/raw/master/imgs/image-20200829151145405.png)