You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python 3.12.2导入paseto库触发TypeError问题求助

Python 3.12.2 中 import paseto 报错的解决办法

在Python 3.12.2环境中执行import paseto时触发以下错误:

Traceback (most recent call last):
  File "D:\Pasiphae\cyber-unity-test\main.py", line 5, in <module>
    from repositories.user_repo.routes.user_routes import user_router
  File "D:\Pasiphae\cyber-unity-test\repositories\user_repo\__init__.py", line 6, in <module>
    from repositories.user_repo.authentication import get_password_hash
  File "D:\Pasiphae\cyber-unity-test\repositories\user_repo\authentication\__init__.py", line 8, in <module>
    import paseto
  File "D:\Pasiphae\cyber-unity-test\env\Lib\site-packages\paseto\__init__.py", line 1, in <module>
    from paseto.paseto import (
  File "D:\Pasiphae\cyber-unity-test\env\Lib\site-packages\paseto\paseto.py", line 7, in <module>
    import pysodium
  File "D:\Pasiphae\cyber-unity-test\env\Lib\site-packages\pysodium\__init__.py", line 33, in <module>
    sodium = ctypes.cdll.LoadLibrary(ctypes.util.find_library('sodium') or ctypes.util.find_library('libsodium'))
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Python312\Lib\ctypes\__init__.py", line 460, in LoadLibrary
    return self._dlltype(name)
           ^^^^^^^^^^^^^^^^^^^
  File "C:\Python312\Lib\ctypes\__init__.py", line 369, in __init__
    if '/' in name or '\' in name:
       ^^^^^^^^^^^
TypeError: argument of type 'NoneType' is not iterable

已排查到libsodium库目录不在系统PATH中,尝试通过以下代码添加路径到环境变量,但未生效:

import os
os.environ['PATH'] += (";C:\\Users\\path\\to\\Python\\Python39\\Scripts\\")

解决办法

  • 添加libsodium到系统PATH
    下载对应系统版本的预编译libsodium二进制包(Windows平台可选择libsodium-Win64.zip),解压后找到包含libsodium.dll的目录(如bin\x64),将该目录添加到系统环境变量PATH中,重启终端或Python解释器后再尝试导入paseto。

  • 手动指定libsodium路径加载
    在导入paseto前,直接指定libsodium的绝对路径加载,示例代码:

    import ctypes
    # 替换为你的libsodium.dll实际路径
    sodium_dll_path = "C:\\your\\path\\to\\libsodium.dll"
    ctypes.cdll.LoadLibrary(sodium_dll_path)
    # 后续再导入paseto
    import paseto
    
  • 更换兼容的paseto库
    部分旧版paseto依赖的pysodium对Python 3.12支持不完善,可尝试安装更新的替代库paseto-lib:

    pip install paseto-lib
    

    之后将导入语句替换为import paseto_lib as paseto即可。

  • 通过conda管理依赖
    若使用conda环境,直接执行以下命令,conda会自动处理libsodium的安装和路径配置:

    conda install -c conda-forge libsodium paseto
    

内容的提问来源于stack exchange,提问作者Panagiotis Antivasis

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 13:27:04