DevWeekly/docs/23-pyhubweekly.md

6.2 KiB
Raw Blame History

前言

PyHubWeekly每周定期更新精选GitHub上优质的Python项目/小工具。

我把PyHubWeekly托管到了Github感兴趣的可以搜索Github项目PyHubWeekly如果喜欢麻烦给个Star支持一下吧。此外欢迎大家通过提交issue来投稿和推荐自己的项目~

本期为大家推荐GitHub上5个优质的Python项目它们分别是

  • aiosql
  • libra
  • PyOxidizer
  • latexify_py
  • Ciphey

下面分别来介绍一下上述5个GitHub项目。

aiosql

Star709

aiosql是一款让Python中执行SQL语句更加简单的一种工具包。

后端开发避免不了和数据库的增删改查打交道。因此在编程语言与SQL混合使用是一种非常常见的现象。无论是Java还是Python。

在以往的方式中都是把SQL语句作为字符串写死在核心逻辑代码中。这样虽然省事但是杂乱的SQL语句会大大增加代码的阅读和理解难度。

而aiosql大大简化这个问题使得上述这个问题得到很好的解决。

安装

$ pip install aiosql

使用

首先,创建一个名为users.sql的SQL文件

-- name: get-all-users
-- Get all user records
select userid,
       username,
       firstname,
       lastname
  from users;


-- name: get-user-by-username^
-- Get user with the given username field.
select userid,
       username,
       firstname,
       lastname
  from users
 where username = :username;

然后在Python代码中引入aiosql工具包它能够很容易解析写好的SQL代码文件能够想执行Python函数一样去执行SQL的一些常用操作。

import aiosql
import sqlite3

conn = sqlite3.connect("myapp.db")
queries = aiosql.from_path("users.sql", "sqlite3")

users = queries.get_all_users(conn)
# >>> [(1, "nackjicholson", "William", "Vaughn"), (2, "johndoe", "John", "Doe"), ...]

users = queries.get_user_by_username(conn, username="nackjicholson")

这种把SQL拆离出来写到文件里通过执行Python函数去执行Python的增删改查不仅能够提升代码的可阅读性还能够减少编码过程中的工作量。

libra

Star1.7k

libra是一款高阶的机器学习工具包,它能够让机器学习使用更加便捷、简单。

机器学习逐渐变成了”傻瓜式“以往网络上总是调侃机器学习、计算机视觉方面的工作人员为调参工程师。的确反观大多数AI领域的工作人员每天的工作内容主要都是集中在准备数据、模型调优。

可是,我认为即便是这种技术程度的工作也将很快被替代。现在,很多大公司都在开发统一、易于使用的机器学习平台。使用者只需要配置数据集,就可以获得训练好的模型。

这已经够简单了,但是libra提供了一种更加简单的解决方案,甚至对于从来没有接触过机器学习,不理解机器学习的外行都能够很容易使用。

libra可以让你像使用搜索引擎一样去使用机器学习你只需要输入一段自然语言描述你想要的完成的任务它就可以按照你的描述去选择数据集 、训练模型。

示例

from libra import client

newClient = client('path/to/dataset') 
newClient.neural_network_query('please model the median number of households')
newClient.info()

dict_keys(['id', 'model', 'num_classes', 'plots', 'target', 'preprocesser', 
          'interpreter', 'test_data', 'losses', 'accuracy'])

newClient.svm_query('predict the proximity to the ocean')
newClient.model().keys()

dict_keys(['regression_ANN', svm'])

PyOxidizer

Star2.5k

PyOxidizer是一款由Rust编写的一款强大的Python打包、分发工具。

当我们完成一项工程的开发,需要把它部署到某台服务器上,或者把这个工具分享给周围的朋友。如果把源代码传递过去显然是不合理的,因为它有很多开发环境的依赖,而且很不安全。

软件打包和分发是解决这个问题的一种方法但是目前Python方面打包工具很多但是大多数使用起来都非常繁琐不够友好。

而PyOxidizer让Python打包变得更加简单。

使用PyOxidizer依赖于Rust因此要使用它打包首先应该安装Rust

$ rustc --version
rustc 1.38.0 (625451e37 2019-09-23)

然后,执行初始化命令,会在选择的文件创建一个配置文件,

$ pyoxidizer init-config-file pyapp

通过这个配置文件就可以统一来管理Python工程的解释器、包管理工具等使得打包任务更加完成、简单。

latexify_py

Star1.2k

latexify_py是一款能够快速把Python中函数转换为LaTeX公式的工具包。

在开发Python过程中往往会涉及到一些公式计算。但是编程语言的描述方式并不是很容易能够让人理解。我们比较熟悉的时从小到大接触的那些数学符号的描述方式。

而latexify_py能够快速把Python函数转换为我们容易理解的数学公式。

示例

@latexify.with_latex
def solve(a, b, c):
  return (-b + math.sqrt(b**2 - 4*a*c)) / (2*a)

print(solve(1, 4, 3))
print(solve)
print()
solve

输出结果:

-1.0
\operatorname{solve}(a, b, c)\triangleq \frac{-b + \sqrt{b^{2} - 4ac}}{2a}

image-20200821230035928

只需要简单的使用装饰器,就可以把函数转换为公式。

Ciphey

Star2.4k

Cipyey是一款应用了自然语言处理和人工智能的自动化解密工具,你只需要输入加密后的文本,它能够返回你解密结果。

它具有如下特性:

  • 支持20+种解密方式
  • 多语言支持
  • 支持加密
  • 速度快

安装

$ python3 -m pip install ciphey --upgrade

使用

在命令行下很容易使用Ciphey只需要执行如下命令即可

$ ciphey -t "encrypted text here" -q

3ways