python_blockchain_app icon indicating copy to clipboard operation
python_blockchain_app copied to clipboard

Pin markupsafe version in requirements.txt

Open Skylake-dev opened this issue 3 years ago • 4 comments

When i was trying to run the application as explained in the readme there is an error on the following command

> flask run --port 8000
[.....]
ImportError: cannot import name 'soft_unicode' from 'markupsafe'

After searching online i found that there is a breaking change in the library that has been made recently that causes this issue. Pinning the version in the requirements fixes the issue. markupsafe==2.0.1

Skylake-dev avatar May 21 '22 15:05 Skylake-dev

这是来自QQ邮箱的假期自动回复邮件。   您好,我最近正在休假中,无法亲自回复您的邮件。我将在假期结束后,尽快给您回复。

tianshanchuan avatar May 21 '22 15:05 tianshanchuan

hmm, is markupsafe being used by flask? or requests?

Those are the only two dependencies the project uses.

satwikkansal avatar May 22 '22 04:05 satwikkansal

here is the full traceback

(.venv) C:\test\python_blockchain_app>flask run --port 8000
Traceback (most recent call last):
  File "C:\Program Files\Python39\lib\runpy.py", line 197, in _run_module_as_main
    return _run_code(code, main_globals, None,
  File "C:\Program Files\Python39\lib\runpy.py", line 87, in _run_code
    exec(code, run_globals)
  File "C:\test\python_blockchain_app\.venv\Scripts\flask.exe\__main__.py", line 4, in <module>
  File "C:\test\python_blockchain_app\.venv\lib\site-packages\flask\__init__.py", line 14, in <module>
    from jinja2 import escape
  File "C:\test\python_blockchain_app\.venv\lib\site-packages\jinja2\__init__.py", line 12, in <module>
    from .environment import Environment
  File "C:\test\python_blockchain_app\.venv\lib\site-packages\jinja2\environment.py", line 25, in <module>
    from .defaults import BLOCK_END_STRING
  File "C:\test\python_blockchain_app\.venv\lib\site-packages\jinja2\defaults.py", line 3, in <module>
    from .filters import FILTERS as DEFAULT_FILTERS  # noqa: F401
  File "C:\test\python_blockchain_app\.venv\lib\site-packages\jinja2\filters.py", line 13, in <module>
    from markupsafe import soft_unicode
ImportError: cannot import name 'soft_unicode' from 'markupsafe' (C:\test\python_blockchain_app\.venv\lib\site-packages\markupsafe\__init__.py)

so markupsafe is a dependency of jinja2 that is a dependency of flask.

You can reproduce the issue following these steps:

  • clone repo and cd into the folder
  • create a clean python virtual environment python -m venv .venv
  • activate the environment .venv\Scripts\activate
  • install requirements pip install -r requirements.txt
  • set FLASK_APP as shown in the readme export FLASK_APP=node_server.py or set FLASK_APP=node_server.py on windows
  • start server flask run --port 8000 <-- this is the line that generates the above exception adding markupsafe==2.0.1 to requirements fixes the issue. This is because they made a breaking change in version 2.1 removing soft_unicode, see the issue that i linked in my original post.

Skylake-dev avatar May 22 '22 09:05 Skylake-dev

Got it, thanks for the details!

satwikkansal avatar May 22 '22 13:05 satwikkansal

  • flask run --port 8000

i added markupsafe==2.0.1 to requirements then run command pip install -r requirements.txt, it's successful but still generate above exception

ryanrob3r avatar Sep 27 '22 10:09 ryanrob3r

这是来自QQ邮箱的假期自动回复邮件。   您好,我最近正在休假中,无法亲自回复您的邮件。我将在假期结束后,尽快给您回复。

tianshanchuan avatar Sep 27 '22 10:09 tianshanchuan

@hwangzh are you sure that the correct version of markupsafe is installed? I just tried and it works.

Skylake-dev avatar Sep 27 '22 11:09 Skylake-dev

This has been fixed now, thanks all!

satwikkansal avatar Dec 05 '22 12:12 satwikkansal