Новое окружение и Spyder
1. Создаем новое окружение
conda create --name myenv
Чтобы создать новое окружение с заданной версией питона:
conda create -n py39 python=3.9 anaconda
2. Активируем окружение
conda activate myenv
Проверить версию питона:
python --version
3. Устанавливаем spyder
conda install spyder
4. Запускаем spyder
spyder
Если получили сообщение "An error occurred while starting the kernel" в консоли Spyder, то это лечится:
Spyder требует, чтобы поддерживаемая версия пакета spyder-kernels присутствовала в рабочей среде, в которой запускается консоль. Соответствие версии spyder и spyder-kernels тут.
Spyder Spyder-Kernels
4.0.0-4.0.1 1.8.1
4.1.0-4.1.2 1.9.0
4.1.3 1.9.1
4.1.4 1.9.3
4.1.5-4.1.6 1.9.4
4.2.0 1.10.0
5.0.0-5.0.5 2.0.5
5.1.0-5.1.5 2.1.3
5.2.0-5.2.1 2.2.0
5.2.2 2.2.1
5.3.0-5.3.3 2.3.3
5.4.0-5.4.3 2.4.3
При использовании conda:
conda activate ENVIRONEMENT-NAME
conda install spyder-kernels=<VERSION>
Из conda-forge:
conda install -c conda-forge spyder-kernels=2.3.2
В другом случае через pip:
pip install spyder-kernels==<VERSION>
Приложение kivy не собирается с помощью pyinstaller
При попытке собрать kivy приложение с последней версией pyinstaller вылетает ошибка, что в приложении Virus/Trojan
Лечится установкой более младшей версии pyinstaller, например 5.13.2
Также в последней версии pyinstaller невозможно убрать консоль с помощью ключа --noconsole или -w, лечится установкой предыдущей версией pyinstaller 5.6.2.
Приложение kivy закрывается сразу после запуска с ошибкой SDL2 Error: "Unable to load image <default.png>"
1. Собрать приложение с консолью, чтобы в консоль вывалилась ошибка.
2. Использовать советы отсюда:
2.1. Скопировать файл libpng16-16.dll из папки [Python]\share\sdl2\bin\ в папку [Dist]\<projectName>\
2.2. Добавить в .spec файл пути к библиотекам:
в начало файла:
from kivy_deps import sdl2, glew
в конец файла:
coll = COLLECT(exe,
Tree('C:\\ProgramData\\Anaconda3\\envs\\myenv\\share\\sdl2\\bin\\'),
Tree('C:\\ProgramData\\Anaconda3\\envs\\myenv\\share\\glew\\bin\\'),
a.binaries,
a.zipfiles,
a.datas,
*[Tree(p) for p in (sdl2.dep_bins + glew.dep_bins)],
strip=False,
upx=True,
upx_exclude=[],
name='KivyApp')
И запускать pyinstaller с помощью:
pyinstaller xxx.spec
И это все сработало только для локальной машины, но не для переноса на другую машину.
3. Помог совет отсюда
Добавить строчки в файл с приложением, в оригинальном совете 5:
Мне хватило трех:
import os
os.environ["KIVY_NO_ARGS"] = "1"
os.environ['KIVY_IMAGE'] = "pil,sdl2"
from kivy.app import App
...
The end.