Не удалось импортировать модуль классов данных - PullRequest
0 голосов
/ 04 июля 2018

Сегодня я установил python 3.7 из apt-get, чтобы опробовать новый модуль 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'

Я даже пытался установить модуль dataclasses с pip3: pip3 install dataclasses. Не уверен, если это необходимо.

Любое предложение о том, в чем может быть проблема?

[EDIT] Просто попробовал это с консолью python3.6, и она работала нормально .. странно.

1 Ответ

0 голосов
/ 04 июля 2018

По предложению @wim python3.7 -m venv venv_dir

Эта команда будет:

  1. Используйте python3.7 для запуска команды
  2. Флаг -m указывает интерпретатору запустить следующий аргумент как скрипт
  3. venv является модулем, и из-за флага -m он будет запускаться как скрипт
  4. Наконец, venv_dir передается модулю venv в качестве аргумента, который этот модуль будет использоваться для создания каталога виртуальной среды на

Как только эта команда будет запущена, теперь у вас будет хорошая песочница для возни / проверки модуля данных.

  • Чтобы активировать эту виртуальную среду, обязательно запустите source venv_dir/bin/activate перед началом работы. Эта команда запустит скрипт на venv_dir/bin/activate, чтобы установить необходимые переменные окружения и другие вещи для вас
  • Чтобы отключить, просто запустите deactivate после активации
...