扫一扫
关注 HG 公众号
发现更多开源乐趣

Python 项目

兴趣是最好的老师,HelloGitHub 就是帮你找到编程的兴趣。

django-debug-toolbar

第 68 期 Star 6.8k Watch 106 Fork 960
Django 的调试工具栏。可显示当前请求和响应有关的各种调试信息,包括耗时、SQL、配置、性能等信息

1. 安装:pip install django-debug-toolbar
2. TEMPLATES = [
    {
        "BACKEND": "django.template.backends.django.DjangoTemplates",
        "APP_DIRS": True,
        # ...
    }
]
3. INSTALLED_APPS = [
    # ...
    "debug_toolbar",
    "django.contrib.staticfiles",
    # ...
]
4. 增加 __debug__ URL
import debug_toolbar
from django.urls import include, path

urlpatterns = [
    # ...
    path('__debug__/', include(debug_toolbar.urls)),
]
5. MIDDLEWARE = [
    # ...
    "debug_toolbar.middleware.DebugToolbarMiddleware",
    # ...
]
6. INTERNAL_IPS = [
    # ...
    "127.0.0.1",
    # ...
]

django-debug-toolbar

webssh

第 68 期 Star 2.5k Watch 72 Fork 658
简单的 SSH 连接服务器的 Python Web 应用。该项目后端采用 Tornado Web 框架和 Python SSH 库 paramiko,前端是 TypeScript 写的命令行前端组件 Xterm.js 实现。整个项目简单还具有实用价值,可作为 Python Web 的实战项目学习
webssh

zulip

第 68 期 Star 14.7k Watch 383 Fork 4.9k
完全开源的企业级即时通讯项目。后端采用 Python 语言实现性能足够强大,功能齐全相当于开源、免费的 Slack,拥有拖拽上传文件、代码高亮、Markdown 语法、应用整合、容易接入的 API 等功能,还支持 Web、PC、iOS 和 Android 主流平台,众多知名企业都在用,能够有效地提高团队沟通和办公效率。同时该项目对新手用户友好,如果你想加入一个不错的 Python 开源项目,推荐你花时间研究下它一定会有所收获
zulip

pottery

第 68 期 Star 551 Watch 11 Fork 21
以 Python 的方式操作 Redis 的库。忘记那些 Redis 命令吧,只要你知道如何使用 Python 字典,那么你就会用这个库操作 Redis

>>> from pottery import RedisList
>>> tel = RedisDict({'jack': 4098, 'sape': 4139}, redis=redis, key='tel')
>>> tel['guido'] = 4127
>>> tel
RedisDict{'jack': 4098, 'sape': 4139, 'guido': 4127}
>>> tel['jack']
4098
>>> squares = RedisList([1, 4, 9, 16, 25], redis=redis, key='squares')
>>> squares
RedisList[1, 4, 9, 16, 25]
>>> squares[0]
1

PyWebIO

第 68 期 Star 2.2k Watch 36 Fork 174
快速构建 Web 应用的 Python 工具。通过该项目你可在不写 HTML、CSS、JS 代码的前提下,仅用 Python 快速完成一个包含数据展示、表单的小型 Web 应用页面
PyWebIO

30-Days-Of-Python

第 67 期 Star 8.1k Watch 453 Fork 1.8k
免费、零基础的 Python 教程。保姆级 Python 教程内容虽为英文,但问题不大请放心食用
30-Days-Of-Python

Tkinter-Designer

第 67 期 Star 3.1k Watch 41 Fork 234
用拖动的方式创建漂亮的桌面软件。它的操作十分简单,首先在 Figma 网站通过拖拽的方式构建应用,然后把设计好的应用地址和 token 输入到 Tkinter-Designer 自动生成 Python 代码,最后就能得到界面简洁大方的桌面应用啦。不用代码做出基于 tkinter 的桌面应用
Tkinter-Designer

q

第 67 期 Star 8.8k Watch 172 Fork 378
用 SQL 方式查询 CSV 文件的命令行工具。支持 where、group_by、join 查询和中文等多种字符编码,还可以把查询结果转存到数据库。终于不用为产品临下班,扔来的 CSV 文件而加班啦

q "SELECT COUNT(*) FROM ./clicks_file.csv WHERE c3 > 32.3"

ps -ef | q -H "SELECT UID,COUNT(*) cnt FROM - GROUP BY UID ORDER BY cnt DESC"

python-pinyin

第 67 期 Star 3.6k Watch 93 Fork 522
汉语转拼音的 Python 库。不知道有没有小伙伴和我一样,刚看到这库不知道能用来干啥。其实它可以用来丰富被搜索的中文内容,通过该项目可实现拼音搜索内容、容错同音错别字、中文排序等,从而提高搜索准确度和体验

>>> from pypinyin import pinyin, lazy_pinyin, Style
>>> pinyin('中心')
[['zhōng'], ['xīn']]
>>> pinyin('中心', heteronym=True)  # 启用多音字模式
[['zhōng', 'zhòng'], ['xīn']]
>>> pinyin('中心', style=Style.TONE3, heteronym=True)
[['zhong1', 'zhong4'], ['xin1']]

CPython-Internals

第 66 期 Star 3.0k Watch 309 Fork 322 中文
图文并茂的 Python 源码阅读笔记项目。阅读的是比较新的 CPython 3.8 版本,重点是项目一直在更新维护

static void take_gil(PyThreadState *tstate)
{
    /* 忽略 */
    while (_Py_atomic_load_relaxed(&_PyRuntime.ceval.gil.locked)) {
        /* 只要 gil 是锁住的状态, 进入这个循环 */
        int timed_out = 0;
        unsigned long saved_switchnum;

        saved_switchnum = _PyRuntime.ceval.gil.switch_number;
        /* 释放 gil.mutex, 并在以下两种条件下唤醒
           1. 等待 INTERVAL 微秒(默认 5000) 
           2. 还没有等待到 5000 微秒但是收到了 gil.cond 的信号
        */
        COND_TIMED_WAIT(_PyRuntime.ceval.gil.cond, _PyRuntime.ceval.gil.mutex,
                        INTERVAL, timed_out);
        /* 当前持有 gil.mutex 这把互斥锁 */
        if (timed_out &&
            _Py_atomic_load_relaxed(&_PyRuntime.ceval.gil.locked) &&
            _PyRuntime.ceval.gil.switch_number == saved_switchnum) {
            /* 如果超过了等待时间, 并且这段等待时间里 gil 的持有者没有变更过, 则尝试让当前持有 gil 的线程进行释放gil
            把 gil_drop_request 值设为 1, 持有锁的线程看到这个值的时候, 会尝试放弃 gil */
            SET_GIL_DROP_REQUEST();
        }
        /* 继续回到 while 循环, 检查 gil 是否为锁住状态 */
    }
    /* 忽略 */
}