导入错误:无法从'markupsafe'中导入'soft_unicode'名称

117

我正在尝试构建一个包含Airflow和Postgres的docker容器,但在构建过程中遇到了许多错误,如下所示。我已经尝试按照以下方式通过降级requirements.txt中的markupsafe来解决此问题,但并没有帮助。我该怎么办才能解决这个问题?

# I tried this version:
markupsafe==2.1.1
# and then also this one:
markupsafe==2.0.1

错误信息:

ImportError: cannot import name 'soft_unicode' from 'markupsafe' (/usr/local/lib/python3.7/site-packages/markupsafe/__init__.py)

我的docker-compose.yml文件:

version: '3'
services:
  postgres:
    image: postgres:11.2
    environment:
      - POSTGRES_USER=airflow
      - POSTGRES_PASSWORD=airflow
      - POSTGRES_DB=airflow
    ports:
      - "5432:5432"

  webserver:
    image: puckel/docker-airflow:1.10.4
    build:
      context: https://github.com/puckel/docker-airflow.git#1.10.4
      dockerfile: Dockerfile
      args:
        AIRFLOW_DEPS: gcp_api,s3
    restart: always
    depends_on:
      - postgres
    environment:
      - LOAD_EX=n
      - EXECUTOR=Local
      - FERNET_KEY=jsDPRErfv8Z_eVTnGfF8ywd19j4pyqE3NpdUBA_oRTo=
    volumes:
      - ./sparkify/dags:/usr/local/airflow/dags
      # Uncomment to include custom plugins
      - ./sparkify/plugins:/usr/local/airflow/plugins
    ports:
      - "8081:8081"
    command: webserver
    healthcheck:
      test: ["CMD-SHELL", "[ -f /usr/local/airflow/airflow-webserver.pid ]"]
      interval: 30s
      timeout: 30s
      retries: 3

  requirements:
    image: python:3.8-alpine
    volumes:
      - .:/sparkify
    working_dir: /sparkify
    command: pip3 install -r requirements.txt

我的requirements.txt文件:

markupsafe==2.0.1

完整的堆栈跟踪:

Creating network "airflowwithpostgres_default" with the default driver
Creating airflowwithpostgres_postgres_1     ... done
Creating airflowwithpostgres_requirements_1 ... done
Creating airflowwithpostgres_webserver_1    ... done
Attaching to airflowwithpostgres_requirements_1, airflowwithpostgres_postgres_1, airflowwithpostgres_webserver_1
postgres_1      | The files belonging to this database system will be owned by user "postgres".
postgres_1      | This user must also own the server process.
postgres_1      | 
webserver_1     | Tue May 10 18:38:28 UTC 2022 - waiting for Postgres... 1/20
postgres_1      | The database cluster will be initialized with locale "en_US.utf8".
postgres_1      | The default database encoding has accordingly been set to "UTF8".
postgres_1      | The default text search configuration will be set to "english".
postgres_1      | 
postgres_1      | Data page checksums are disabled.
postgres_1      | 
postgres_1      | fixing permissions on existing directory /var/lib/postgresql/data ... ok
postgres_1      | creating subdirectories ... ok
postgres_1      | selecting default max_connections ... 100
postgres_1      | selecting default shared_buffers ... 128MB
postgres_1      | selecting dynamic shared memory implementation ... posix
postgres_1      | creating configuration files ... ok
postgres_1      | running bootstrap script ... ok
postgres_1      | performing post-bootstrap initialization ... ok
postgres_1      | syncing data to disk ... 
postgres_1      | WARNING: enabling "trust" authentication for local connections
postgres_1      | You can change this by editing pg_hba.conf or using the option -A, or
postgres_1      | --auth-local and --auth-host, the next time you run initdb.
postgres_1      | ok
postgres_1      | 
postgres_1      | Success. You can now start the database server using:
postgres_1      | 
postgres_1      |     pg_ctl -D /var/lib/postgresql/data -l logfile start
postgres_1      | 
postgres_1      | waiting for server to start....2022-05-10 18:38:29.428 UTC [44] LOG:  listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432"
postgres_1      | 2022-05-10 18:38:29.441 UTC [45] LOG:  database system was shut down at 2022-05-10 18:38:29 UTC
postgres_1      | 2022-05-10 18:38:29.446 UTC [44] LOG:  database system is ready to accept connections
postgres_1      |  done
postgres_1      | server started
postgres_1      | CREATE DATABASE
postgres_1      | 
postgres_1      | 
postgres_1      | /usr/local/bin/docker-entrypoint.sh: ignoring /docker-entrypoint-initdb.d/*
postgres_1      | 
postgres_1      | 2022-05-10 18:38:29.859 UTC [44] LOG:  received fast shutdown request
postgres_1      | waiting for server to shut down....2022-05-10 18:38:29.861 UTC [44] LOG:  aborting any active transactions
postgres_1      | 2022-05-10 18:38:29.865 UTC [44] LOG:  background worker "logical replication launcher" (PID 51) exited with exit code 1
postgres_1      | 2022-05-10 18:38:29.865 UTC [46] LOG:  shutting down
postgres_1      | 2022-05-10 18:38:29.882 UTC [44] LOG:  database system is shut down
postgres_1      |  done
postgres_1      | server stopped
postgres_1      | 
postgres_1      | PostgreSQL init process complete; ready for start up.
postgres_1      | 
postgres_1      | 2022-05-10 18:38:29.974 UTC [1] LOG:  listening on IPv4 address "0.0.0.0", port 5432
postgres_1      | 2022-05-10 18:38:29.974 UTC [1] LOG:  listening on IPv6 address "::", port 5432
postgres_1      | 2022-05-10 18:38:29.976 UTC [1] LOG:  listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432"
postgres_1      | 2022-05-10 18:38:29.989 UTC [62] LOG:  database system was shut down at 2022-05-10 18:38:29 UTC
postgres_1      | 2022-05-10 18:38:29.994 UTC [1] LOG:  database system is ready to accept connections
requirements_1  | Collecting markupsafe==2.1.1
requirements_1  |   Downloading MarkupSafe-2.1.1-cp38-cp38-musllinux_1_1_x86_64.whl (29 kB)
requirements_1  | Installing collected packages: markupsafe
requirements_1  | Successfully installed markupsafe-2.1.1
requirements_1  | WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv
airflowwithpostgres_requirements_1 exited with code 0
postgres_1      | 2022-05-10 18:38:33.377 UTC [69] LOG:  incomplete startup packet
webserver_1     | Traceback (most recent call last):
webserver_1     |   File "/usr/local/bin/airflow", line 21, in <module>
webserver_1     |     from airflow import configuration
webserver_1     |   File "/usr/local/lib/python3.7/site-packages/airflow/__init__.py", line 39, in <module>
webserver_1     |     from airflow.models import DAG
webserver_1     |   File "/usr/local/lib/python3.7/site-packages/airflow/models/__init__.py", line 21, in <module>
webserver_1     |     from airflow.models.baseoperator import BaseOperator  # noqa: F401
webserver_1     |   File "/usr/local/lib/python3.7/site-packages/airflow/models/baseoperator.py", line 30, in <module>
webserver_1     |     import jinja2
webserver_1     |   File "/usr/local/lib/python3.7/site-packages/jinja2/__init__.py", line 33, in <module>
webserver_1     |     from jinja2.environment import Environment, Template
webserver_1     |   File "/usr/local/lib/python3.7/site-packages/jinja2/environment.py", line 15, in <module>
webserver_1     |     from jinja2 import nodes
webserver_1     |   File "/usr/local/lib/python3.7/site-packages/jinja2/nodes.py", line 19, in <module>
webserver_1     |     from jinja2.utils import Markup
webserver_1     |   File "/usr/local/lib/python3.7/site-packages/jinja2/utils.py", line 642, in <module>
webserver_1     |     from markupsafe import Markup, escape, soft_unicode
webserver_1     | ImportError: cannot import name 'soft_unicode' from 'markupsafe' (/usr/local/lib/python3.7/site-packages/markupsafe/__init__.py)
webserver_1     | Traceback (most recent call last):
webserver_1     |   File "/usr/local/bin/airflow", line 21, in <module>
webserver_1     |     from airflow import configuration
webserver_1     |   File "/usr/local/lib/python3.7/site-packages/airflow/__init__.py", line 39, in <module>
webserver_1     |     from airflow.models import DAG
webserver_1     |   File "/usr/local/lib/python3.7/site-packages/airflow/models/__init__.py", line 21, in <module>
webserver_1     |     from airflow.models.baseoperator import BaseOperator  # noqa: F401
webserver_1     |   File "/usr/local/lib/python3.7/site-packages/airflow/models/baseoperator.py", line 30, in <module>
webserver_1     |     import jinja2
webserver_1     |   File "/usr/local/lib/python3.7/site-packages/jinja2/__init__.py", line 33, in <module>
webserver_1     |     from jinja2.environment import Environment, Template
webserver_1     |   File "/usr/local/lib/python3.7/site-packages/jinja2/environment.py", line 15, in <module>
webserver_1     |     from jinja2 import nodes
webserver_1     |   File "/usr/local/lib/python3.7/site-packages/jinja2/nodes.py", line 19, in <module>
webserver_1     |     from jinja2.utils import Markup
webserver_1     |   File "/usr/local/lib/python3.7/site-packages/jinja2/utils.py", line 642, in <module>
webserver_1     |     from markupsafe import Markup, escape, soft_unicode
webserver_1     | ImportError: cannot import name 'soft_unicode' from 'markupsafe' (/usr/local/lib/python3.7/site-packages/markupsafe/__init__.py)
webserver_1     | Traceback (most recent call last):
webserver_1     |   File "/usr/local/bin/airflow", line 21, in <module>
webserver_1     |     from airflow import configuration
webserver_1     |   File "/usr/local/lib/python3.7/site-packages/airflow/__init__.py", line 39, in <module>
webserver_1     |     from airflow.models import DAG
webserver_1     |   File "/usr/local/lib/python3.7/site-packages/airflow/models/__init__.py", line 21, in <module>
webserver_1     |     from airflow.models.baseoperator import BaseOperator  # noqa: F401
webserver_1     |   File "/usr/local/lib/python3.7/site-packages/airflow/models/baseoperator.py", line 30, in <module>
webserver_1     |     import jinja2
webserver_1     |   File "/usr/local/lib/python3.7/site-packages/jinja2/__init__.py", line 33, in <module>
webserver_1     |     from jinja2.environment import Environment, Template
webserver_1     |   File "/usr/local/lib/python3.7/site-packages/jinja2/environment.py", line 15, in <module>
webserver_1     |     from jinja2 import nodes
webserver_1     |   File "/usr/local/lib/python3.7/site-packages/jinja2/nodes.py", line 19, in <module>
webserver_1     |     from jinja2.utils import Markup
webserver_1     |   File "/usr/local/lib/python3.7/site-packages/jinja2/utils.py", line 642, in <module>
webserver_1     |     from markupsafe import Markup, escape, soft_unicode
webserver_1     | ImportError: cannot import name 'soft_unicode' from 'markupsafe' (/usr/local/lib/python3.7/site-packages/markupsafe/__init__.py)
postgres_1      | 2022-05-10 18:38:35.020 UTC [70] LOG:  incomplete startup packet
webserver_1     | Traceback (most recent call last):
webserver_1     |   File "/usr/local/bin/airflow", line 21, in <module>
webserver_1     |     from airflow import configuration
webserver_1     |   File "/usr/local/lib/python3.7/site-packages/airflow/__init__.py", line 39, in <module>
webserver_1     |     from airflow.models import DAG
webserver_1     |   File "/usr/local/lib/python3.7/site-packages/airflow/models/__init__.py", line 21, in <module>
webserver_1     |     from airflow.models.baseoperator import BaseOperator  # noqa: F401
webserver_1     |   File "/usr/local/lib/python3.7/site-packages/airflow/models/baseoperator.py", line 30, in <module>
webserver_1     |     import jinja2
webserver_1     |   File "/usr/local/lib/python3.7/site-packages/jinja2/__init__.py", line 33, in <module>
webserver_1     |     from jinja2.environment import Environment, Template
webserver_1     |   File "/usr/local/lib/python3.7/site-packages/jinja2/environment.py", line 15, in <module>
webserver_1     |     from jinja2 import nodes
webserver_1     |   File "/usr/local/lib/python3.7/site-packages/jinja2/nodes.py", line 19, in <module>
webserver_1     |     from jinja2.utils import Markup
webserver_1     |   File "/usr/local/lib/python3.7/site-packages/jinja2/utils.py", line 642, in <module>
webserver_1     |     from markupsafe import Markup, escape, soft_unicode
webserver_1     | ImportError: cannot import name 'soft_unicode' from 'markupsafe' (/usr/local/lib/python3.7/site-packages/markupsafe/__init__.py)
webserver_1     | Traceback (most recent call last):
webserver_1     |   File "/usr/local/bin/airflow", line 21, in <module>
webserver_1     |     from airflow import configuration
webserver_1     |   File "/usr/local/lib/python3.7/site-packages/airflow/__init__.py", line 39, in <module>
webserver_1     |     from airflow.models import DAG
webserver_1     |   File "/usr/local/lib/python3.7/site-packages/airflow/models/__init__.py", line 21, in <module>
webserver_1     |     from airflow.models.baseoperator import BaseOperator  # noqa: F401
webserver_1     |   File "/usr/local/lib/python3.7/site-packages/airflow/models/baseoperator.py", line 30, in <module>
webserver_1     |     import jinja2
webserver_1     |   File "/usr/local/lib/python3.7/site-packages/jinja2/__init__.py", line 33, in <module>
webserver_1     |     from jinja2.environment import Environment, Template
webserver_1     |   File "/usr/local/lib/python3.7/site-packages/jinja2/environment.py", line 15, in <module>
webserver_1     |     from jinja2 import nodes
webserver_1     |   File "/usr/local/lib/python3.7/site-packages/jinja2/nodes.py", line 19, in <module>
webserver_1     |     from jinja2.utils import Markup
webserver_1     |   File "/usr/local/lib/python3.7/site-packages/jinja2/utils.py", line 642, in <module>
webserver_1     |     from markupsafe import Markup, escape, soft_unicode
webserver_1     | ImportError: cannot import name 'soft_unicode' from 'markupsafe' (/usr/local/lib/python3.7/site-packages/markupsafe/__init__.py)
webserver_1     | Traceback (most recent call last):
webserver_1     |   File "/usr/local/bin/airflow", line 21, in <module>
webserver_1     |     from airflow import configuration
webserver_1     |   File "/usr/local/lib/python3.7/site-packages/airflow/__init__.py", line 39, in <module>
webserver_1     |     from airflow.models import DAG
webserver_1     |   File "/usr/local/lib/python3.7/site-packages/airflow/models/__init__.py", line 21, in <module>
webserver_1     |     from airflow.models.baseoperator import BaseOperator  # noqa: F401
webserver_1     |   File "/usr/local/lib/python3.7/site-packages/airflow/models/baseoperator.py", line 30, in <module>
webserver_1     |     import jinja2
webserver_1     |   File "/usr/local/lib/python3.7/site-packages/jinja2/__init__.py", line 33, in <module>
webserver_1     |     from jinja2.environment import Environment, Template
webserver_1     |   File "/usr/local/lib/python3.7/site-packages/jinja2/environment.py", line 15, in <module>
webserver_1     |     from jinja2 import nodes
webserver_1     |   File "/usr/local/lib/python3.7/site-packages/jinja2/nodes.py", line 19, in <module>
webserver_1     |     from jinja2.utils import Markup
webserver_1     |   File "/usr/local/lib/python3.7/site-packages/jinja2/utils.py", line 642, in <module>
webserver_1     |     from markupsafe import Markup, escape, soft_unicode
webserver_1     | ImportError: cannot import name 'soft_unicode' from 'markupsafe' (/usr/local/lib/python3.7/site-packages/markupsafe/__init__.py)
airflowwithpostgres_webserver_1 exited with code 1

pip install MarkupSafe==2.0.1 - Ofer Rahat
15个回答

1

对于任何降级后仍然遇到问题的人。

进入已经存在的目录,删除它,然后重新安装降级版本。

pip install markupsafe==2.0.1本身不会修复问题,除非已经存在的标记文件被删除。


0
在 Mac OS X 上,使用 Python 3.8,我通过降级此软件包来解决了这个问题:
sudo port activate py38-markupsafe @2.0.1_0

0
解决方案1:升级markupsafe模块
pip install MarkupSafe

解决方案2:将markupsafe模块降级至2.0.1版本。
pip install markupsafe==2.0.1

解决方案3: 将aws-sam-cli模块升级到最新版本
pip install --user --upgrade aws-sam-cli

解决方案4: 将aws-sam-cli模块降级到最新版本
pip install --user aws-sam-cli ==1.37.0`

-1
对于一些人,在尝试安装markupsafe==2.0.1后仍然遇到以上问题,可能是因为虚拟环境没有刷新。尝试取消激活虚拟环境,然后重新激活它可能会起作用。

1
你的回答可以通过提供更多支持信息来改进。请编辑以添加进一步的细节,例如引用或文档,以便他人可以确认你的答案是正确的。您可以在帮助中心中找到有关如何编写良好答案的更多信息。 - Community

-1

导入错误:无法从 'markupsafe' 导入 'soft_unicode'

请执行 pip install markupsafe==2.0.1

成功安装 markupsafe-2.0.1


1
你的回答可以通过提供更多支持信息来改进。请编辑以添加进一步的细节,例如引用或文档,以便他人可以确认你的答案是正确的。您可以在帮助中心中找到有关如何编写良好答案的更多信息。 - Community

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接