【问题标题】:Python 3.7 cmath module import errorPython 3.7 cmath 模块导入错误
【发布时间】:2018-08-07 06:18:21
【问题描述】:

我使用 ppa:deadsnakes/ppa 存储库在 ubuntu 上安装了 python3.7。

当我尝试运行时

import cmath

在 python shell 中失败并显示消息:

ModuleNotFoundError: No module named 'cmath'

我没有在 python3.7 更新日志中找到任何关于弃用这个库或任何内容的信息。它在 python 3.5 和 2.7 中运行良好。我尝试将它安装在不同的 ubuntu 虚拟机和计算机上,我总是得到相同的结果。

我是否需要安装一些特定的库或其他东西(我怀疑这是因为该模块在标准库https://docs.python.org/3/library/index.html 中列出)还是其他地方有问题?

【问题讨论】:

  • 有趣的是 docs 说:This module is always available. 所以我猜这是您使用的存储库的问题
  • 使用 Pyenv 我在 3.7 中安装了 cmath 模块,所以我猜这个问题来自存储库。旁注:如果您在同一台机器上使用多个版本的 python,看看像 Pyenv 这样的工具可能会让您的工作更轻松

标签: python python-3.7


【解决方案1】:

这是python3.7的deadsnakes backport中的一个错误特别是用于xenial。

在 3.7 beta 期间(导入包时)。 cpython 构建系统使用PY_CORE_CFLAGS 作为make 变量。后来改为PY_STDMODULE_CFLAGS。 debian 在其软件包中附带了一个补丁,该补丁使用sed 表达式为该特定变量调整生成的makefile 行。由于缺少它,因此导致 cmath 模块构建不正确。

这已在this commit 中修复

此修复适用于 3.7.0-1+xenial2(debian 版本)

【讨论】:

  • 3.7.2-1+xenial1 现在再次发生这种情况。无论出于何种原因。
  • 呃,这可能是新的链接标志,将修复--你能在github.com/deadsnakes/issues上提出问题吗
  • 再次修复了 3.7.2-1+xenial2 -- cpython 再次更改了变量 -- 这次是 PY_BUILTIN_MODULE_CFLAGS
【解决方案2】:

我通过使用 make 下载和安装 python3.7 来安装它,并且 cmath 开始工作。看起来 ppa:deadsnakes/ppa 存储库缺少 cmath 模块。

【讨论】:

    猜你喜欢
    • 2020-12-08
    • 2012-07-14
    • 2023-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多