导入数据类模块失败

问题描述 投票:0回答:2

今天我从 apt-get 安装了 python 3.7 来尝试新的 dataclasses 模块。我单独安装了它,因为 python3.6 无法升级到 3.7。

当我输入:

python3.7 --version
时,它会给我:
>>> Python 3.7.0a2
作为我当前的版本。

问题是我似乎无法导入数据类。

我的进口声明是:

from dataclasses import dataclass
按照指示这里

这是它给我的错误消息:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ModuleNotFoundError: No module named 'dataclasses'
Error in sys.excepthook:
Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/apport_python_hook.py", line 63, in apport_excepthook
    from apport.fileutils import likely_packaged, get_recent_crashes
  File "/usr/lib/python3/dist-packages/apport/__init__.py", line 5, in <module>
    from apport.report import Report
  File "/usr/lib/python3/dist-packages/apport/report.py", line 30, in <module>
    import apport.fileutils
  File "/usr/lib/python3/dist-packages/apport/fileutils.py", line 23, in <module>
    from apport.packaging_impl import impl as packaging
  File "/usr/lib/python3/dist-packages/apport/packaging_impl.py", line 24, in <module>
    import apt
  File "/usr/lib/python3/dist-packages/apt/__init__.py", line 23, in <module>
    import apt_pkg
ModuleNotFoundError: No module named 'apt_pkg'

Original exception was:
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ModuleNotFoundError: No module named 'dataclasses'

我什至尝试使用 pip3 安装数据类模块:

pip3 install dataclasses
。但不确定是否有必要。

对可能出现的问题有什么建议吗?

[编辑]刚刚用 python3.6 控制台尝试过,它工作得很好..很奇怪。

python python-3.x python-import python-3.7 python-dataclasses
2个回答
6
投票

按照@wim的建议

python3.7 -m venv venv_dir

此命令将:

  1. 使用python3.7运行命令
  2. -m
    标志告诉解释器将下一个参数作为脚本运行
  3. venv
    是一个模块,并且由于
    -m
    标志,它将作为脚本运行
  4. 最后,
    venv_dir
    作为参数提供给
    venv
    模块, 该模块将用于在
  5. 创建一个虚拟环境目录

一旦运行此命令,您将拥有一个很好的沙箱,用于处理/测试数据类模块。

  • 要激活此虚拟环境,请务必在开始之前运行
    source venv_dir/bin/activate
    。此命令将运行
    venv_dir/bin/activate
    处的脚本,为您设置必要的环境变量和其他内容
  • 要停用,只需在激活后运行
    deactivate

0
投票

我遇到这个问题是因为我的文件名是

ast.py
,这显然与某些内部模块冲突。重命名文件后,它工作正常。

© www.soinside.com 2019 - 2024. All rights reserved.