diff options
Diffstat (limited to 'PYTHON/BEGIN + PIP.md')
| -rw-r--r-- | PYTHON/BEGIN + PIP.md | 226 |
1 files changed, 226 insertions, 0 deletions
diff --git a/PYTHON/BEGIN + PIP.md b/PYTHON/BEGIN + PIP.md new file mode 100644 index 0000000..d67c8c0 --- /dev/null +++ b/PYTHON/BEGIN + PIP.md @@ -0,0 +1,226 @@ + +![[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 <packet> -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"` + +===================== |
