Błąd podczas korzystania z pyinstaller: UnicodeDecodeError:' utf-8 ' kodek nie może dekodować bajtu 0xFF
Mam problem podczas kompilacji kodu PyQt za pomocą pyinstallera.
Używam tej linii do kompilacji:
c:\Anaconda3\Scripts\pyinstaller.exe -y -F --distpath="." MyQt.py
Potem pojawia się komunikat o błędzie:
File "c:\anaconda36bis\lib\site-packages\PyInstaller\hooks\hook-zmq.py", line
18, in <module>
hiddenimports.extend(collect_submodules('zmq.backend'))
File "c:\anaconda36bis\lib\site-packages\PyInstaller\utils\hooks\__init__.py",
line 619, in collect_submodules
repr(pkg_dir), package))
File "c:\anaconda36bis\lib\site-packages\PyInstaller\utils\hooks\__init__.py",
line 90, in exec_statement
return __exec_python_cmd(cmd)
File "c:\anaconda36bis\lib\site-packages\PyInstaller\utils\hooks\__init__.py",
line 77, in __exec_python_cmd
txt = exec_python(*cmd, env=pp_env)
File "c:\anaconda36bis\lib\site-packages\PyInstaller\compat.py", line 562, in
exec_python
return exec_command(*cmdargs, **kwargs)
File "c:\anaconda36bis\lib\site-packages\PyInstaller\compat.py", line 369, in
exec_command
out = out.decode(encoding)
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xff in position 152: invali
d start byte
Komunikat o błędzie nie jest dla mnie jasny i nie rozumiem, dlaczego tak się dzieje.
Czy to możliwe, że pyinstaller spróbować użyć modułu, który nie jest kompatybilny? Używam ich w moim skrypcie:
# -*- coding: utf-8 -*-
from __future__ import absolute_import
from __future__ import division
from __future__ import print_function
from __future__ import unicode_literals
# from PyQt5.QtGui import *
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
import sys
import numpy as np
import matplotlib
matplotlib.use('Qt5Agg')
from matplotlib.figure import Figure
from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas
from matplotlib.backends.backend_qt5agg import NavigationToolbar2QT as NavigationToolbar
from scipy.ndimage import imread
from scipy.ndimage.morphology import binary_dilation
from scipy.optimize import curve_fit, leastsq
Update
Problem wydrukowany w konsoli pojawia się bezpośrednio po
142859 INFO: Loading module hook "hook-zmq.py"...
Więc powinno to oznaczać, że błąd pochodzi z zmq?
5 answers
Znalazłem odpowiedź na innym forum.
Zmieniam numer linii 369 w pliku Python\Lib\site-packages\Pyinstaller\compat.py
:
out = out.decode(encoding)
Do
out = out.decode(encoding, errors='ignore')
Lub
out = out.decode(encoding, "replace")
Teraz mogę skompilować skrypt bez żadnego problemu. Nadal Nie wiem, dlaczego mój problem pojawił się w pierwszej kolejności, ale przynajmniej teraz to kompiluje.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-01-10 12:57:53
Odpowiedź nadal działa 2 lata później, ale linia zmieniła się z 368 na 428.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-11-05 16:08:47
W najnowszej wersji (3.5) linia nieznacznie przesunęła się do 427.
Najlepszą rzeczą do zrobienia jest poszukiwanie
out = out.decode(encoding)
I zastąp go
out = out.decode(encoding, "replace")
Nie rozumiem, dlaczego nie rozwiązują tego irytującego problemu!Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-11-06 11:29:52
Zmiana compat.py działa dla mnie: out = out.decode (encoding, "replace")
Jest to znany problem na pyinstaller i deweloperzy pracują nad nim. https://github.com/pyinstaller/pyinstaller/pull/3895
Mam nadzieję, że ten błąd zostanie rozwiązany przy następnej aktualizacji.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-04-03 10:59:30
Błąd został naprawiony od wersji 4.0
pip install "pyinstaller>=4.0.0"
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-11-11 13:16:39