asyncpg 安装完全指南:pip 安装、GSSAPI/SSPI 认证支持与源码构建

发布时间:2026/9/26 10:28:45
asyncpg 安装完全指南:pip 安装、GSSAPI/SSPI 认证支持与源码构建 数据库后端【免费下载链接】asyncpgA fast PostgreSQL Database Client Library for Python/asyncio.项目地址https://gitcode.com/gh_mirrors/as/asyncpg点击查看免费下载asyncpg 是一款为 Python 3.9 与asyncio框架专门设计的 PostgreSQL 数据库客户端库直接实现了 PostgreSQL 服务端二进制协议支持预处理语句、可滚动游标、复合类型与数组的自动编解码等能力。本文以仓库中的 安装文档 为主体结合 pyproject.toml、setup.py、Makefile 与连接参数解析源码系统讲解 asyncpg 的标准安装方式、GSSAPI/SSPI 认证支持的安装与配置、从源码构建含调试构建以及测试套件的运行方法帮助你在各种平台与认证场景下正确完成部署。1. 安装概览无外部依赖的默认路径asyncpg 的核心卖点之一就是在不使用 GSSAPI/SSPI 认证的情况下没有外部依赖。它不依赖 libpq也无需系统级 PostgreSQL 客户端库仅有一个面向 Python 3.11 以下版本的运行期依赖async_timeout见 pyproject.toml。因此标准安装只需要一行 pip 命令$ pip install asyncpg这条命令会从 PyPI 拉取并安装 asyncpg。对于绝大多数 Linux、macOS 和 Windows 平台PyPI 上都提供了预编译的二进制 wheel无需本地 C 编译器即可直接安装使用。安装完成后即可在代码中通过import asyncpg使用import asyncio import asyncpg async def run(): conn await asyncpg.connect(useruser, passwordpassword, databasedatabase, host127.0.0.1) values await conn.fetch( SELECT * FROM mytable WHERE id $1, 10, ) await conn.close() asyncio.run(run())适用前提asyncpg 要求Python 3.9 或更高版本。构建系统在 setup.py 中会显式检查sys.version_info (3, 9)并直接抛出RuntimeError因此 Python 3.8 及以下版本无法安装。2. 安装 GSSAPI/SSPI 认证支持如果你的应用需要在 PostgreSQL 上使用KerberosGSSAPI或 Windows 上的SSPI认证则需要安装额外的认证依赖$ pip install asyncpg[gssauth]这个可选依赖组在 pyproject.toml 中有明确定义[project.optional-dependencies] gssauth [ gssapi; platform_system ! Windows, sspilib; platform_system Windows, ]也就是说在Windows上安装sspilibSSPI 支持在其他平台Linux、macOS 等上安装gssapiGSSAPI 支持。SSPI 与 GSSAPI 之间可以互操作SSPI 客户端可以认证到 GSSAPI 服务器反之亦然因此 Windows 客户端与 Linux 服务器或反向组合之间也能顺利完成 Kerberos 认证。2.1 Linux 上安装 GSSAPI 的系统前置条件在 Linux 上安装gssapi时由于PyPI 没有为gssapi提供 Linux wheelpip 会尝试从源码编译因此需要一个可用的 C 编译器Kerberos 5 开发文件可通过安装系统包获得Debian/Ubuntulibkrb5-devRHEL/Fedorakrb5-devel例如 Debian/Ubuntu 系$ sudo apt install libkrb5-dev build-essential $ pip install asyncpg[gssauth]RHEL/Fedora 系$ sudo dnf install krb5-devel gcc $ pip install asyncpg[gssauth]2.2 Windows 上使用 GSSAPIWindows 上同样可以启用 GSSAPI只需三步安装gssapi包pip install gssapi安装 Kerberos for WindowsMIT 提供的 Kerberos Windows 发行版连接时通过gsslib参数或PGGSSLIB环境变量将 GSS 库指定为gssapi。2.3 连接时指定 GSS 库与 Kerberos 服务名安装好依赖后在连接层面需要正确配置两个参数均在asyncpg.connect()中提供见 connection.py参数作用默认值gsslib用于 GSSAPI/SSPI 认证的 GSS 库取值只能是gssapi或sspiWindows 上为sspi其他平台为gssapikrbsrvname认证时使用的 Kerberos 服务名SPN 的服务部分必须与服务器配置一致postgres连接参数的解析逻辑位于 connect_utils.py当gsslib未显式指定时会依次回退到PGGSSLIB环境变量、平台默认值Windows 用sspi其余平台用gssapi若最终值不在{gssapi, sspi}集合内会抛出ClientConfigurationError。因此$ export PGGSSLIBgssapi # 环境变量方式或直接在代码中传参conn await asyncpg.connect( useralice, hostpg.example.com, gsslibgssapi, krbsrvnamepostgres, )关于参数优先级测试用例 test_connect.py 验证了完整的解析顺序关键字参数 DSN 查询串 环境变量 默认值。例如dsn中的gsslibsspi会被关键字参数覆盖而PGGSSLIB环境变量会被 DSN 中的显式值覆盖非法取值如gsslibinvalid会报出 gsslib parameter must be either gssapi or sspi 的错误。认证相关的真实场景测试如test_auth_gssapi_ok、test_auth_gssapi_bad_srvname、test_auth_gssapi_bad_user见 test_connect.py还验证了错误服务名、错误用户等失败路径会抛出GSSAPI authentication failed for user之类的异常。3. 从源码构建Git 检出如果你需要从 Git 检出checkout构建 asyncpg例如调试底层协议实现或开发新特性需要满足以下前置条件克隆仓库时使用--recurse-submodulesasyncpg 依赖子模块pgproto 协议代码漏掉子模块会导致构建失败可用的 C 编译器CPython 头文件通常通过安装对应的 Python 开发包获得Debian/Ubuntupython3-devRHEL/Fedorapython3-devel满足条件后在源码根目录执行$ pip install -e .3.1 构建背后发生了什么asyncpg 的核心代码大量使用 Cython*.pyx/*.pxd构建系统在 setup.py 中定义了三个 C 扩展模块asyncpg.pgproto.pgproto由 pgproto.pyx 编译而来实现协议原语asyncpg.protocol.record直接编译 C 源文件 recordobj.c实现记录对象asyncpg.protocol.protocol由 protocol.pyx 编译而来实现核心协议栈。只有当仓库中缺少预生成的protocol.c或设置了强制重编环境变量时setup.py才会把Cython(3.2.1,4.0.0)加入setup_requires见 setup.py。编译时默认启用的 Cython 指令包括language_level3、freethreading_compatible自由线程/无 GIL 兼容与subinterpreters_compatible子解释器兼容见 setup.py这对应了 asyncpg 对 Python 3.13 自由线程构建与子解释器的支持方向。源码树中也可用仓库根目录的 Makefile 执行等价构建$ make compile # 等价于 env ASYNCPG_BUILD_CYTHON_ALWAYS1 python -m pip install -e .3.2 调试构建启用 ASYNCPG_DEBUG默认构建是优化过的发布版本若需要包含更多运行时检查的调试构建可在构建时设置ASYNCPG_DEBUG环境变量$ env ASYNCPG_DEBUG1 pip install -e .从 setup.py 的实现可以看到ASYNCPG_DEBUG1会触发一组联动行为强制重新运行cythonize()cython_alwaysTrue开启 Cython 注释 HTML 输出cython_annotateTrue追加 Cython 指令linetraceTrue启用 setuptools 的debug编译标志额外定义PG_DEBUG、CYTHON_TRACE、CYTHON_TRACE_NOGIL宏。这会让 C 扩展带上行级追踪与更严格的运行时断言便于定位协议解析、编解码等底层问题代价是性能下降。仓库根目录的 Makefile 也提供了快捷目标$ make debug # 等价于 env ASYNCPG_DEBUG1 python -m pip install -e .构建产物可以用make clean清除包括生成的*.c、*.so、*.html注释文件与build、*.egg-info目录见 Makefile。3.3 关于子模块的说明安装文档明确要求以--recurse-submodules克隆仓库。这是为了拉取 asyncpg 依赖的 Git 子模块协议相关代码。克隆命令如下$ git clone --recurse-submodules https://gitcode.com/gh_mirrors/as/asyncpg如果克隆时漏掉了子模块可随后执行git submodule update --init --recursive补全再继续构建。4. 运行测试套件安装文档指出运行测试需要本机安装 PostgreSQL测试会真实连接数据库服务器执行查询与认证流程。执行整个测试套件的经典方式$ python setup.py test当前仓库的测试组织在 tests 目录下入口为 tests/init.py它通过unittest.TestLoader按test_*.py模式自动发现全部测试模块并聚合为tests.suite。因此等价地也可以直接用 unittest 运行$ python -m unittest -v tests.suite仓库根目录的 Makefile 提供了更贴近 CI 的三段式测试目标$ make test它会依次执行PYTHONASYNCIODEBUG1 python -m unittest -v tests.suite开启 asyncio 调试模式捕获未等待的任务、慢回调等异常python -m unittest -v tests.suite常规模式USE_UVLOOP1 python -m unittest -v tests.suite启用 uvloop 事件循环运行同一套测试验证对第三方事件循环实现的兼容性。如果只想快速跑一遍可用$ make quicktest # 即 python -m unittest -v tests.suite测试主题覆盖面很广包括连接与认证test_connect.py、事务test_transaction.py、预处理语句与缓存失效test_prepare.py、test_cache_invalidation.py、取消操作test_cancellation.py、编解码test_codecs.py、连接池test_pool.py等。若本机没有可用的 PostgreSQL 实例也可以参考测试基建 test__environment.py 与 testbase 了解测试所需的环境变量与连接约定。5. 各安装路径速查场景命令/操作前置条件标准安装无需 GSSAPIpip install asyncpgPython 3.9各平台有预编译 wheelGSSAPI/SSPI 认证pip install asyncpg[gssauth]Linux 需 C 编译器 libkrb5-dev/krb5-develWindows 可选pip install gssapi Kerberos for Windows源码构建git clone --recurse-submodulespip install -e .C 编译器、CPython 头文件python3-dev/python3-devel调试构建env ASYNCPG_DEBUG1 pip install -e .在源码构建基础上启用运行时检查运行测试python setup.py test或make test/make quicktest本机已安装 PostgreSQL无论是通过 pip 直接安装、为 Kerberos 认证安装可选依赖还是从源码构建调试版asyncpg 的安装链路都非常清晰。安装完成后即可通过asyncpg.connect()建立连接直接体验其为asyncio深度优化的高性能 PostgreSQL 客户端能力。赞分享数据库后端【免费下载链接】asyncpgA fast PostgreSQL Database Client Library for Python/asyncio.项目地址https://gitcode.com/gh_mirrors/as/asyncpg点击查看免费下载相关推荐google-images-download 安装完全指南pip 安装、源码手动安装与安装后验证google images download 安装完全指南pip 安装、源码手动安装与安装后验证 本篇技术指南以 google images download网页爬虫CLINumba 安装完全指南conda / pip / 源码构建、CUDA 支持与版本兼容性详解Numba 安装完全指南conda / pip / 源码构建、CUDA 支持与版本兼容性详解 本指南以 Numba 官方安装文档 docs/source/u编译器高性能计算ChatterBot 安装完全指南pip 安装、可选依赖与源码构建实战ChatterBot 安装完全指南pip 安装、可选依赖与源码构建实战 导读 本文是 ChatterBotPython 机器学习对话引擎的官方安装指南覆人工智能NLP交互助手上一篇把外文游戏玩成母语Translumo 实时屏幕翻译的一天实战记录下一篇实时屏幕翻译免费开源终极指南让外语游戏和视频硬字幕秒变中文创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询