![[Python_шпаргалка.png]] ```bash which python3 which pip sudo apt install -y python3-pip pip install numpy sudo apt install -y python3-virtualenv which virtualenv # в папке проекта для ДЕактивации среды: deactivate #========================================= cd code mkdir pythontests cd pythontests python3 -m venv .venv-name . ./.venv-name/bin/activate nvim pyrightconfig.json { "venv": "env", "venvPath": "." } # в папке проекта для ДЕактивации среды: deactivate #========================================== # Список пакетов с зависимостями: pip freeze # Создаем файл с зависимостями: pip freeze > requirements.txt # Устанавливаем все зависимости в другом месте: pip install -r requirements.txt # список установленных пакетов: pip list # удалить пакет: pip uninstall -y ``` ```sh # Активация в Windows: python -m venv venv .\venv\Scripts\activate # Создаем файл с зависимостями: pip freeze > requirements.txt # создаем файл requirements.txt (со всеми необходимыми зависимостями) и запускаем команду: pip install -r .\requirements.txt ``` ```sh git clone user@address:~/packet.git cd packet # Создаем сам скрипт: vim install.sh # Вносим в него: apt update apt install -y gcc python3-dev python3-venv python3 -m venv env source env-allocation/bin/activate pip install wheel pip install -r requirements.txt export KEY_SECRET='' # возможно нужно дать разрешение на запуск! sudo sh ./install.sh sudo python3 ./runner.py ``` ========================= Вот как поместить Python-программу в systemd для автозапуска: ## 1. Создайте unit-файл для systemd Создайте файл в `/etc/systemd/system/` (для системных сервисов) или `~/.config/systemd/user/` (для пользовательских сервисов): bash sudo nano /etc/systemd/system/myapp.service ## 2. Пример конфигурации unit-файла ini [Unit] Description=My Python Application After=network.target [Service] Type=simple # Если используете виртуальное окружение: ExecStart=/path/to/venv/bin/python /path/to/your/app.py # Или без виртуального окружения: # ExecStart=/usr/bin/python3 /path/to/your/app.py # Рабочая директория WorkingDirectory=/path/to/your/app/directory # Пользователь для запуска (опционально) User=username Group=groupname # Перезапуск при ошибке Restart=always RestartSec=5 # Переменные окружения Environment="PYTHONPATH=/path/to/your/app" Environment="DATABASE_URL=mysql://user:pass@localhost/db" [Install] WantedBy=multi-user.target ## 3. Для приложений с зависимостями (виртуальное окружение) ini [Service] Type=simple ExecStart=/home/user/myapp/venv/bin/python /home/user/myapp/main.py WorkingDirectory=/home/user/myapp Environment="PATH=/home/user/myapp/venv/bin" ## 4. Основные команды для управления bash # Загрузить изменения конфигурации sudo systemctl daemon-reload # Запустить сервис sudo systemctl start myapp # Остановить сервис sudo systemctl stop myapp # Включить автозапуск при загрузке sudo systemctl enable myapp # Проверить статус sudo systemctl status myapp # Просмотреть логи sudo journalctl -u myapp -f ## 5. Полезные опции для Python-приложений - **`Restart`** - политика перезапуска: - `no` - не перезапускать - `on-success` - только при успешном завершении - `on-failure` - при ошибке (рекомендуется) - `always` - всегда перезапускать - **`StandardOutput`/`StandardError`** - куда перенаправлять вывод: ini StandardOutput=journal StandardError=journal # Или в файл: StandardOutput=file:/var/log/myapp.log ## 6. Пример для Flask/Django приложения ini [Unit] Description=My Flask Web Application After=network.target mysql.service [Service] Type=simple User=www-data Group=www-data WorkingDirectory=/var/www/myapp ExecStart=/var/www/myapp/venv/bin/gunicorn --workers 3 --bind unix:/tmp/myapp.sock wsgi:app Environment="FLASK_ENV=production" Restart=always [Install] WantedBy=multi-user.target ## 7. Проверка и отладка bash # Проверить синтаксис конфигурации sudo systemd-analyze verify /etc/systemd/system/myapp.service # Тестовый запуск без systemd sudo -u username /path/to/python /path/to/app.py # Подробные логи sudo journalctl -u myapp -n 100 -f ## Советы: 1. Убедитесь, что Python-скрипт имеет права на выполнение 2. Используйте абсолютные пути во всех настройках 3. Для разработки можно запускать как user-сервис без sudo 4. Для приложений с GUI может понадобиться `Environment="DISPLAY=:0"` =====================