【问题标题】:No module named '_contextvars' in Python 3.7.3 virtual environmentPython 3.7.3 虚拟环境中没有名为“_contextvars”的模块
【发布时间】:2019-07-04 07:07:43
【问题描述】:

我正在开发一个 Django 项目,该项目需要 Ubuntu 16 上的 Python3.7.3 虚拟环境。 所以我创建了一个虚拟环境并在其中安装了所有需求并验证它,激活它。

但是当我尝试使用 runserver 运行 Django 服务器时,出现以下错误。

Traceback (most recent call last):
  File "/usr/lib/python3.7/decimal.py", line 3, in <module>
    from _decimal import *
ModuleNotFoundError: No module named '_decimal'

During handling of the above exception, another exception occurred:

    Traceback (most recent call last):
      File "./interfaces/control/manage.py", line 8, in <module>
        execute_from_command_line(sys.argv)
      File "/home/path/lib/python3.7/site-packages/django/core/management/__init__.py", line 381, in execute_from_command_line
        utility.execute()
      File "/home/path/lib/python3.7/site-packages/django/core/management/__init__.py", line 375, in execute
        self.fetch_command(subcommand).run_from_argv(self.argv)
      File "/home/path/lib/python3.7/site-packages/django/core/management/__init__.py", line 224, in fetch_command
        klass = load_command_class(app_name, subcommand)
      File "/home/path/lib/python3.7/site-packages/django/core/management/__init__.py", line 36, in load_command_class
        module = import_module('%s.management.commands.%s' % (app_name, name))
      File "/home/path/lib/python3.7/importlib/__init__.py", line 127, in import_module
        return _bootstrap._gcd_import(name[level:], package, level)
      File "<frozen importlib._bootstrap>", line 1006, in _gcd_import
      File "<frozen importlib._bootstrap>", line 983, in _find_and_load
      File "<frozen importlib._bootstrap>", line 967, in _find_and_load_unlocked
      File "<frozen importlib._bootstrap>", line 677, in _load_unlocked
      File "<frozen importlib._bootstrap_external>", line 728, in exec_module
      File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
      File "/home/path/lib/python3.7/site-packages/django/core/management/commands/runserver.py", line 10, in <module>
        from django.core.servers.basehttp import (
      File "/home/path/lib/python3.7/site-packages/django/core/servers/basehttp.py", line 17, in <module>
        from django.core.handlers.wsgi import LimitedStream
      File "/home/path/lib/python3.7/site-packages/django/core/handlers/wsgi.py", line 8, in <module>
        from django.core.handlers import base
      File "/home/path/lib/python3.7/site-packages/django/core/handlers/base.py", line 7, in <module>
        from django.urls import get_resolver, set_urlconf
      File "/home/path/lib/python3.7/site-packages/django/urls/__init__.py", line 1, in <module>
        from .base import (
      File "/home/path/lib/python3.7/site-packages/django/urls/base.py", line 4, in <module>
        from django.utils.encoding import iri_to_uri
      File "/home/path/lib/python3.7/site-packages/django/utils/encoding.py", line 4, in <module>
        from decimal import Decimal
      File "/usr/lib/python3.7/decimal.py", line 8, in <module>
        from _pydecimal import *
      File "/usr/lib/python3.7/_pydecimal.py", line 436, in <module>
        import contextvars
      File "/usr/lib/python3.7/contextvars.py", line 1, in <module>
        from _contextvars import Context, ContextVar, Token, copy_context
    ModuleNotFoundError: No module named '_contextvars'

注意这里是我的virtualenv这里先去的Django项目。

/home/path/lib/python3.7/site-packages/django/core/management/__init__.py

再次在这里搜索python的全局位置。

/usr/lib/python3.7/_pydecimal.py

有人可以告诉我为什么它会去全球位置并抛出错误。

【问题讨论】:

  • 在运行 django 服务器之前是否激活了 dbssvenv 环境?
  • @lakshmisaikota 是的。我做到了。
  • 我们能否验证 Python 版本:“python --version”?
  • 是的。我检查了它。这是3.7.3

标签: python django virtualenv python-3.7 python-contextvars


【解决方案1】:

问题出在全局 Python 解释器本身。

我在https://linuxize.com/post/how-to-install-python-3-7-on-ubuntu-18-04/ 中关注 Installing Python 3.7 on Ubuntu from Source 以安装 Python 3.7。

不知何故,它没有为 python 解释器安装所有必需的包。

如果我使用 Installing Python 3.7 on Ubuntu with Apt 进行安装,一切正常。

【讨论】:

    【解决方案2】:

    就我而言,安装在虚拟环境中的 python 版本是 3.7.2,而我的计算机中唯一的版本是 3.7.3。所以,我重新安装了 3.7.2 版本,它工作正常。 希望对你有用!!!

    【讨论】:

    • win7下我测试了4,但是只有python 3.7.2版可以用streamlit。
    【解决方案3】:

    对于我来说,我检查了该位置,发现不知何故我的 requirements.txt 已将 Werkzeug 更改为 1.5x 版本。所以我恢复了这些更改,这解决了我的问题。

    试试这个。

    pip3 install Werkzeug==2.0.1
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-03-03
      • 2017-09-11
      • 2021-11-24
      • 1970-01-01
      • 2021-09-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多