ffbsee / ffbsee-webseite

Die Webseite der Freifunk Initiative Freifunk Bodensee
https://ffbsee.net/
MIT License
2 stars 11 forks source link

lektor server startet nicht #87

Closed DEvil0000 closed 5 years ago

DEvil0000 commented 5 years ago
Traceback (most recent call last):
  File "/home/alexander/git/ffbsee-webseite/venv/bin/lektor", line 10, in <module>
    sys.exit(main())
  File "/home/alexander/git/ffbsee-webseite/venv/local/lib/python2.7/site-packages/lektor/cli.py", line 627, in main
    cli.main(args=args, prog_name=name)
  File "/home/alexander/git/ffbsee-webseite/venv/local/lib/python2.7/site-packages/click/core.py", line 717, in main
    rv = self.invoke(ctx)
  File "/home/alexander/git/ffbsee-webseite/venv/local/lib/python2.7/site-packages/click/core.py", line 1137, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/home/alexander/git/ffbsee-webseite/venv/local/lib/python2.7/site-packages/click/core.py", line 956, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/home/alexander/git/ffbsee-webseite/venv/local/lib/python2.7/site-packages/click/core.py", line 555, in invoke
    return callback(*args, **kwargs)
  File "/home/alexander/git/ffbsee-webseite/venv/local/lib/python2.7/site-packages/click/decorators.py", line 64, in new_func
    return ctx.invoke(f, obj, *args, **kwargs)
  File "/home/alexander/git/ffbsee-webseite/venv/local/lib/python2.7/site-packages/click/core.py", line 555, in invoke
    return callback(*args, **kwargs)
  File "/home/alexander/git/ffbsee-webseite/venv/local/lib/python2.7/site-packages/lektor/cli.py", line 269, in clean_cmd
    ctx.load_plugins()
  File "/home/alexander/git/ffbsee-webseite/venv/local/lib/python2.7/site-packages/lektor/cli.py", line 131, in load_plugins
    initialize_plugins(self.get_env())
  File "/home/alexander/git/ffbsee-webseite/venv/local/lib/python2.7/site-packages/lektor/pluginsystem.py", line 122, in initialize_plugins
    plugins = load_plugins()
  File "/home/alexander/git/ffbsee-webseite/venv/local/lib/python2.7/site-packages/lektor/pluginsystem.py", line 116, in load_plugins
    rv[ep.name] = ep.load()
  File "/home/alexander/git/ffbsee-webseite/venv/local/lib/python2.7/site-packages/pkg_resources/__init__.py", line 2324, in load
    return self.resolve()
  File "/home/alexander/git/ffbsee-webseite/venv/local/lib/python2.7/site-packages/pkg_resources/__init__.py", line 2330, in resolve
    module = __import__(self.module_name, fromlist=['__name__'], level=0)
  File "/home/alexander/.cache/lektor/packages/65bd09cc70e8fbfa07ff335e31d6ce38/lektor_scsscompile.py", line 30
    def is_enabled(self, build_flags) -> bool:
                                      ^
SyntaxError: invalid syntax
DO1JLR commented 5 years ago

Ist ein Problem mit den Plugins https://github.com/maxbachmann/lektor-SCSScompile.git und https://github.com/maxbachmann/lektor-JSminify.git

@maxbachmann ^^

Läuft wieder wenn man die entfernt.

Betroffenes System: Ubuntu LTS 18.04
Installation: make install
Ausführen: make server

maxbachmann commented 5 years ago

Die Plugins sind alle nur Python 3 kompatibel. (Wie mit dir besprochen @DO1JLR) Edit: kann man wohl dem shebang #!/usr/bin/env python3 auch enforcen, was ich bisher nicht gemacht habe. Werde ich am Wochenende fixen ;)

DO1JLR commented 5 years ago

es ist zumindest temporär gefixt.

Jemand eine gutee idee wie man checken kann ob der user wirklich python3 nimmt?

rtt-mmk commented 5 years ago

The Unix/Linux program loader looks at the first two bytes of that file; if these two bytes are #!, then the loader interprets the remainder of the shebang line (excluding the shebang itself) as a command to launch an interpreter with which to run the file contents as a script. The program loader launches the specified interpreter, feeding it the path of the original file as an argument. This has a couple of advantages: The script-writer has more control over which interpreter will be used (which solves the Python2/Python3 issue) and can sometimes pass an extra argument to the interpreter.

und: Which of the following is correct? **#!/usr/bin/env python

!/usr/bin/python**

The first option seems to work in all environments, but it is banned in popular distros like Fedora (and I believe also Debian, but I can’t find a reference for this). Using env in shebangs is dangerous because it can result in system packages using non-system versions of python. python is used in so many places throughout modern systems, it’s not hard to see how using #!/usr/bin/env in an important package could badly bork users’ operating systems if they install a custom version of python in /usr/local. Don’t do this.

und: unless your python script is compatible with both python2 and python3, because you don’t know what version you’re getting. Your python script is almost certainly not compatible with both python2 and python3 (and if you think it is, it’s probably somehow broken, because I doubt you regularly test it with both). Instead, you should write the shebang like this:

!/usr/bin/env python2

!/usr/bin/python2

!/usr/bin/env python3

!/usr/bin/python3

This works as long as you only care about Linux and BSDs. It doesn’t work on macOS, which provides /usr/bin/python and Details: https://blogs.gnome.org/mcatanzaro/2018/02/16/on-python-shebangs/

rtt-mmk commented 5 years ago

Jemand eine gutee idee wie man checken kann ob der user wirklich python3 nimmt?

If-Clause. Or While-Loop. ...coden...

DO1JLR commented 5 years ago

Jemand eine gutee idee wie man checken kann ob der user wirklich python3 nimmt?

If-Clause. Or While-Loop. ...coden...

Prinzipell eine Idee...

Die Frage wäre eben nur: wo?

maxbachmann commented 5 years ago

Naja ich werde testen ob das funktioniert und ansonsten die Plugins halt python 2 kompatibel machen. Wäre jetzt auch nicht super aufwendig und funktioniert dann auf jeden Fall bei jedem Ich müsste mal schauen was überhaupt alles python3 benötigt Sollte 1) das typing sein (das -> type) 2) wie ich sicherstelle das das Verzeichnis existiert geht in python3 kürzer, aber da kann ich auch die Version nehmen die mit beiden funktioniert Der Rest sollte meines Wissens auch mit python2 funktionieren

maxbachmann commented 5 years ago

@DEvil0000 Ich habe den shebang mal ergänzt. Kannst du mal folgendes Ausprobieren:

git clone https://github.com/maxbachmann/lektor-JSminify.git packages/lektor-JSminify
git clone https://github.com/maxbachmann/lektor-SCSScompile.git packages/lektor-SCSScompile
lektor server -f jsminify -f scsscompile

Wenn es so funktioniert pflege ich das so auch bei pypi ein ;)

maxbachmann commented 5 years ago

@DEvil0000 Hast du das bereits getestet?