prakhar1989/docker-curriculum

Cannot import name 'url_quote' from 'werkzeug.urls'

jcpayne opened this issue ยท 9 comments

Wonderful tutorial -- thanks so much. I ran into an import error on the catnip example, in the run command:

sudo docker run -p 8888:5000 <username>/catnip
#ImportError: cannot import name 'url_quote' from 'werkzeug.urls' (/usr/local/lib/python3.8/site-packages/werkzeug/urls.py)

Docker Engine on Kubuntu

I second this, great tutorial so far, but I also get ImportError: cannot import name 'url_quote' from 'werkzeug.urls' (/usr/local/lib/python3.10/site-packages/werkzeug/urls.py) when I run the docker file.
As you might see, even changing from python 3.9 in your example to 3.10 doesn't fix the issue.

I run Docker Engine on Ubuntu

Full error:
Traceback (most recent call last): File "/usr/scr/app/./app.py", line 1, in <module> from flask import Flask, render_template File "/usr/local/lib/python3.10/site-packages/flask/__init__.py", line 7, in <module> from .app import Flask as Flask File "/usr/local/lib/python3.10/site-packages/flask/app.py", line 28, in <module> from . import cli File "/usr/local/lib/python3.10/site-packages/flask/cli.py", line 18, in <module> from .helpers import get_debug_flag File "/usr/local/lib/python3.10/site-packages/flask/helpers.py", line 16, in <module> from werkzeug.urls import url_quote ImportError: cannot import name 'url_quote' from 'werkzeug.urls' (/usr/local/lib/python3.10/site-packages/werkzeug/urls.py)

@jcpayne jcpayne I found a workaround:

  • in your docker-curriculum / flask-app there is a file called requirements.txt
  • change the Flask version to 3.0.0 and set the Werkzeug version to 3.0.0.
    The file looks like this now:
Flask==3.0.0
Werkzeug==3.0.0
  • Save and exit.
  • again run docker build -t /catnip .
  • there will be a red warning about this is a development server which you can ignore.
  • type in your browser 127.0.0.1:5000
  • enjoy cat gif :)

That's great @dwolf42 , thanks! It works for me too.

yozsoy commented

@dwolf42 fixed the issue for me

Alas did not solve the issue for me. Gives me an error:
2.481 ERROR: Could not find a version that satisfies the requirement Werzeug==3.0.0 (from versions: none)
2.482 ERROR: No matching distribution found for Werzeug==3.0.0

Saw a mention of werzeug version 2.2.2, tried that version to, same error.

To bad, really liked the way this tutorial was going

Peter

The following worked for me in the requirements.txt file:

Flask==2.0.2
Werkzeug==2.2.2