Hacktoberfest 2026: die Issues, die Maintainer für den Oktober markiert haben – offen und einsteigerfreundlich. Hacktoberfest-Issues durchsuchen

Cannot freeze on Windows

Offen
#517 0 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

Bewertung

Schwierigkeit
4/5
Geschätzter Aufwand
3-5 Tage
Anfängerfreundlichkeit
35/100
Issue-Typ
Bug
Klarheit
Größtenteils klar
Aktivitätsstatus
Veraltet
Tech-Stack
flask, python
Bereich
build-system, cli

Rechercherichtung

Beginne mit dem Windows-Traceback durch naucse/models.py, naucse/sanitize.py, naucse/views.py und dem Freeze-Einstiegspunkt in naucse/cli.py. Führe den Freeze-Befehl unter Windows erneut aus und verfolge die Fehler bei statischen Dateien und bei /course/meta/meta/local-run/static/info.yml; abgeschlossen ist die Aufgabe, wenn der Freeze ohne die gemeldeten 500- oder 404-Fehler abgeschlossen wird.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Beschreibung

bug code

Got:

...
Rendering page intro/micropython (index)
ERROR:flask.app:Exception on /static/css/body.css [GET]
Traceback (most recent call last):
  File "C:\Users\Linux\.virtualenvs\naucse.python.cz-Ap5RjXMi\lib\site-packages\
flask\app.py", line 2292, in wsgi_app
    response = self.full_dispatch_request()
  File "C:\Users\Linux\.virtualenvs\naucse.python.cz-Ap5RjXMi\lib\site-packages\
flask\app.py", line 1815, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "C:\Users\Linux\.virtualenvs\naucse.python.cz-Ap5RjXMi\lib\site-packages\
flask\app.py", line 1718, in handle_user_exception
    reraise(exc_type, exc_value, tb)
  File "C:\Users\Linux\.virtualenvs\naucse.python.cz-Ap5RjXMi\lib\site-packages\
flask\_compat.py", line 35, in reraise
    raise value
  File "C:\Users\Linux\.virtualenvs\naucse.python.cz-Ap5RjXMi\lib\site-packages\
flask\app.py", line 1811, in full_dispatch_request
    rv = self.preprocess_request()
  File "C:\Users\Linux\.virtualenvs\naucse.python.cz-Ap5RjXMi\lib\site-packages\
flask\app.py", line 2087, in preprocess_request
    rv = func()
  File "C:\Users\Linux\naucse.python.cz\naucse\views.py", line 51, in _get_model

    g.model.freeze()
  File "C:\Users\Linux\naucse.python.cz\naucse\models.py", line 1029, in freeze
    course.freeze()
  File "C:\Users\Linux\naucse.python.cz\naucse\models.py", line 816, in freeze
    self.load_all_lessons()
  File "C:\Users\Linux\naucse.python.cz\naucse\models.py", line 799, in load_all
_lessons
    self.load_lessons(self._requested_lessons)
  File "C:\Users\Linux\naucse.python.cz\naucse\models.py", line 780, in load_les
sons
    parent=self,
  File "C:\Users\Linux\naucse.python.cz\naucse\converters.py", line 603, in load

    return converter.load(data[slug], **kwargs)
  File "C:\Users\Linux\naucse.python.cz\naucse\converters.py", line 215, in load

    result[k] = self.item_converter.load(v, **kwargs)
  File "C:\Users\Linux\naucse.python.cz\naucse\converters.py", line 468, in load

    field.load_into(result, data, parent=result)
  File "C:\Users\Linux\naucse.python.cz\naucse\converters.py", line 360, in load
_into
    value = self.converter.load(item_data, **kwargs)
  File "C:\Users\Linux\naucse.python.cz\naucse\converters.py", line 215, in load

    result[k] = self.item_converter.load(v, **kwargs)
  File "C:\Users\Linux\naucse.python.cz\naucse\converters.py", line 468, in load

    field.load_into(result, data, parent=result)
  File "C:\Users\Linux\naucse.python.cz\naucse\converters.py", line 360, in load
_into
    value = self.converter.load(item_data, **kwargs)
  File "C:\Users\Linux\naucse.python.cz\naucse\models.py", line 162, in load
    return self.sanitizer(parent, value)
  File "C:\Users\Linux\naucse.python.cz\naucse\models.py", line 147, in _sanitiz
e_page_content
    'static': static_url,
  File "C:\Users\Linux\naucse.python.cz\naucse\sanitize.py", line 198, in saniti
ze_html
    for fragment in lxml.html.fragments_fromstring(text)
  File "C:\Users\Linux\naucse.python.cz\naucse\sanitize.py", line 198, in <listc
omp>
    for fragment in lxml.html.fragments_fromstring(text)
  File "C:\Users\Linux\naucse.python.cz\naucse\sanitize.py", line 186, in saniti
ze_fragment
    sanitize_element(fragment, naucse_urls=naucse_urls)
  File "C:\Users\Linux\naucse.python.cz\naucse\sanitize.py", line 179, in saniti
ze_element
    sanitize_element(child, naucse_urls=naucse_urls)
  File "C:\Users\Linux\naucse.python.cz\naucse\sanitize.py", line 179, in saniti
ze_element
    sanitize_element(child, naucse_urls=naucse_urls)
  File "C:\Users\Linux\naucse.python.cz\naucse\sanitize.py", line 169, in saniti
ze_element
    attr_name, value, naucse_urls=naucse_urls)
  File "C:\Users\Linux\naucse.python.cz\naucse\sanitize.py", line 103, in conver
t_link
    new_url = naucse_urls[url.path](**query)
  File "C:\Users\Linux\naucse.python.cz\naucse\models.py", line 140, in static_u
rl
    return parent_page.lesson.static_files[filename].get_url(**kw)
KeyError: 'pics/grass.svg'
Traceback (most recent call last):
  File "C:\Users\Linux\AppData\Local\Programs\Python\Python36-32\Lib\runpy.py",
line 193, in _run_module_as_main
    "__main__", mod_spec)
  File "C:\Users\Linux\AppData\Local\Programs\Python\Python36-32\Lib\runpy.py",
line 85, in _run_code
    exec(code, run_globals)
  File "C:\Users\Linux\naucse.python.cz\naucse\__main__.py", line 3, in <module>

    main()
  File "C:\Users\Linux\naucse.python.cz\naucse\cli.py", line 8, in main
    elsa.cli(app, base_url='https://naucse.python.cz')
  File "C:\Users\Linux\.virtualenvs\naucse.python.cz-Ap5RjXMi\lib\site-packages\
elsa\_cli.py", line 158, in cli
    return command()
  File "C:\Users\Linux\.virtualenvs\naucse.python.cz-Ap5RjXMi\lib\site-packages\
click\core.py", line 764, in __call__
    return self.main(*args, **kwargs)
  File "C:\Users\Linux\.virtualenvs\naucse.python.cz-Ap5RjXMi\lib\site-packages\
click\core.py", line 717, in main
    rv = self.invoke(ctx)
  File "C:\Users\Linux\.virtualenvs\naucse.python.cz-Ap5RjXMi\lib\site-packages\
click\core.py", line 1137, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "C:\Users\Linux\.virtualenvs\naucse.python.cz-Ap5RjXMi\lib\site-packages\
click\core.py", line 956, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "C:\Users\Linux\.virtualenvs\naucse.python.cz-Ap5RjXMi\lib\site-packages\
click\core.py", line 555, in invoke
    return callback(*args, **kwargs)
  File "C:\Users\Linux\.virtualenvs\naucse.python.cz-Ap5RjXMi\lib\site-packages\
elsa\_cli.py", line 113, in freeze
    freeze_app(app, freezer, path, base_url, verbose=verbose)
  File "C:\Users\Linux\.virtualenvs\naucse.python.cz-Ap5RjXMi\lib\site-packages\
elsa\_cli.py", line 50, in freeze_app
    for page in freezer.freeze_yield():
  File "C:\Users\Linux\.virtualenvs\naucse.python.cz-Ap5RjXMi\lib\site-packages\
flask_frozen\__init__.py", line 183, in freeze_yield
    new_filename = self._build_one(url)
  File "C:\Users\Linux\.virtualenvs\naucse.python.cz-Ap5RjXMi\lib\site-packages\
flask_frozen\__init__.py", line 322, in _build_one
    % (response.status, url))
ValueError: Unexpected status '500 INTERNAL SERVER ERROR' on URL /static/css/bod
y.css

C:\Users\Linux\naucse.python.cz>

Hacking on:

diff --git a/naucse/models.py b/naucse/models.py
index 6cbb0169..e5072320 100644
--- a/naucse/models.py
+++ b/naucse/models.py
@@ -137,7 +137,9 @@ def _sanitize_page_content(parent, content):
         return parent_page.solutions[int(solution)].get_url(**kw)

     def static_url(*, filename, **kw):
-        return parent_page.lesson.static_files[filename].get_url(**kw)
+        filename_ = filename.replace('/', '\\')
+        print('XXX', filename, filename_)
+        return parent_page.lesson.static_files[filename_].get_url(**kw)

     return sanitize.sanitize_html(
         content,
diff --git a/naucse/sanitize.py b/naucse/sanitize.py
index 4595bfb7..edee94de 100644
--- a/naucse/sanitize.py
+++ b/naucse/sanitize.py
@@ -81,7 +81,7 @@ def convert_link(attr_name, value, *, naucse_urls=None):
     elif url.scheme == '':
         if url.netloc == '':
             # Relative URL
-            if url.path.startswith('static/'):
+            if url.path.startswith(('static/', 'static\\')):
                 return url.path
             elif url.path != '':
                 # Documents should not assume that naucse has any particular
diff --git a/naucse/views.py b/naucse/views.py
index f72bfdbd..f59a7612 100644
--- a/naucse/views.py
+++ b/naucse/views.py
@@ -2,6 +2,7 @@ import datetime
 from pathlib import Path
 import functools
 import calendar
+import mimetypes
 import os

 from flask import Flask, render_template, jsonify, url_for, Response, abort, g,
 redirect
@@ -103,6 +104,9 @@ def init_model():
 register_url_converters(app)
 setup_jinja_env(app.jinja_env)

+# Old Windows might serve this as application/octet-stream
+mimetypes.add_type('application/json', '.json')
+

 @app.route('/')
 def index():

So far I have:

...
XXX pics/wall.svg pics\wall.svg
XXX naucse_fork.png naucse_fork.png
XXX naucse_fork.png naucse_fork.png
sending C:\Users\Linux\naucse.python.cz info.yml
Traceback (most recent call last):
  File "C:\Users\Linux\AppData\Local\Programs\Python\Python36-32\Lib\runpy.py",
line 193, in _run_module_as_main
    "__main__", mod_spec)
  File "C:\Users\Linux\AppData\Local\Programs\Python\Python36-32\Lib\runpy.py",
line 85, in _run_code
    exec(code, run_globals)
  File "C:\Users\Linux\naucse.python.cz\naucse\__main__.py", line 3, in <module>

    main()
  File "C:\Users\Linux\naucse.python.cz\naucse\cli.py", line 8, in main
    elsa.cli(app, base_url='https://naucse.python.cz')
  File "C:\Users\Linux\.virtualenvs\naucse.python.cz-Ap5RjXMi\lib\site-packages\
elsa\_cli.py", line 158, in cli
    return command()
  File "C:\Users\Linux\.virtualenvs\naucse.python.cz-Ap5RjXMi\lib\site-packages\
click\core.py", line 764, in __call__
    return self.main(*args, **kwargs)
  File "C:\Users\Linux\.virtualenvs\naucse.python.cz-Ap5RjXMi\lib\site-packages\
click\core.py", line 717, in main
    rv = self.invoke(ctx)
  File "C:\Users\Linux\.virtualenvs\naucse.python.cz-Ap5RjXMi\lib\site-packages\
click\core.py", line 1137, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "C:\Users\Linux\.virtualenvs\naucse.python.cz-Ap5RjXMi\lib\site-packages\
click\core.py", line 956, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "C:\Users\Linux\.virtualenvs\naucse.python.cz-Ap5RjXMi\lib\site-packages\
click\core.py", line 555, in invoke
    return callback(*args, **kwargs)
  File "C:\Users\Linux\.virtualenvs\naucse.python.cz-Ap5RjXMi\lib\site-packages\
elsa\_cli.py", line 113, in freeze
    freeze_app(app, freezer, path, base_url, verbose=verbose)
  File "C:\Users\Linux\.virtualenvs\naucse.python.cz-Ap5RjXMi\lib\site-packages\
elsa\_cli.py", line 50, in freeze_app
    for page in freezer.freeze_yield():
  File "C:\Users\Linux\.virtualenvs\naucse.python.cz-Ap5RjXMi\lib\site-packages\
flask_frozen\__init__.py", line 183, in freeze_yield
    new_filename = self._build_one(url)
  File "C:\Users\Linux\.virtualenvs\naucse.python.cz-Ap5RjXMi\lib\site-packages\
flask_frozen\__init__.py", line 322, in _build_one
    % (response.status, url))
ValueError: Unexpected status '404 NOT FOUND' on URL /course/meta/meta/local-run
/static/info.yml

C:\Users\Linux\naucse.python.cz>
Vorherrschende Sprache
Keine Sprachdaten
Sterne
335
Forks
119
Ø Merge
3 Std. 6 Min.
Gemergte PRs (30 T.)
1

Entwicklungsumgebung

Die Einrichtungsdateien dieses Projekts haben wir noch nicht geprüft. Beginnen Sie mit der README; die allgemeinen Schritte stehen in unserem Leitfaden für den ersten Beitrag.

Erste Schritte

  1. Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
  3. Forken Sie das Repository und arbeiten Sie in einem Branch.
  4. Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.

Mehr aus pyvec/naucse.python.cz

Alle Issues in pyvec/naucse.python.cz

Ähnliche Issues

Weitere Issues zu Build System

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.