Ответы пользователя по тегу Linux
  • Почему в PyCharm под ALT Linux в «чистое» виртуальное окружение «просачиваются» лишние пакеты?

    Sergei_Erjemin
    @Sergei_Erjemin Автор вопроса
    Улыбайся, будь самураем...
    В Alt Linux установку PyCharm (и других приложений JetBrains) можно осуществить несколькими способами. И первый из них -- установка через Flatpak. При его использовании установка и исполнение приложения происходит в некоей "изолированной среде". Таким образом, любое виртаульное кружение, созданное в PyCharm, создаётся внутри в "изолированной среды" Flatpak... При подключении существующего виртуального окружения, "изолированный" PyCharm не имеет возможности взаимодейтвовать с ним напрямую, и просто копирует его (виртуальное окружение) внутрь "изоляции" Flatpak. Виртальное окружение внутри Flatpak как раз и соодежит все эти "просочившиеся пакеты". Поэтому во "внешней среде" (системной) этих пакетов и не видно. Предположительно, это эти пакеты нужны самомому Flatpack и именно поэтому их нельзя ни удалить, ни обновить (зато можно поставить второй пакет радом, и таким образом может существовать одновременно urllib3 разных версий, lol).

    Кроме того, в изолированной среде Flatpak фиксируется внешнее состояние системных пакетоов на момент его развертывания (в данном случае -- на момент установки PyCharm). Все последующие изменения системных пакетов в изолированную среду Flatpack не попадают. И получается следующее: если, например, мы установим в Alt Linux новую версию Python, то при создании (или подключении) виртального окружения c этой версией Python средствами PyCharm, благодаря механизму virtualenv, этот новый Python будет перенесён внутрь "изоляции" Flatpack. Но если, мы доустановим в Alt Linux системные пакеты (например: mariadb-client или libmariadb3), то в изолированную среду Flatpack они уже не попадут(!). Что, например у меня, вызвало шок: в терминале Alt Linux установка pip install mysqlclient проходит, а в терминале PyCharm падает.

    Как лечить?

    В Alt Linux есть второй способ устаноки PyCharm -- c момощью пакетного менеджера snap:
    snap install --classic pycharm-professional
    Среда snap менее изолированна. Она видит (и использует) текущее состояние системных пакетов Alt Linux и ей не нужны никакие внутренние python-пакеты. Таким образом PyCharm не показывает никаких "просочившихся" батареек (их нет, т.к. среда не изолированна).

    Правда возникает другой побочный эффект -- средствами PyCharm не получается с нуля создать "чистое" виртаульное окружение. Можно только подключить существующее. Как устанавливать пакеты в это окружение -- не важно. Можно через pip (в терминале Alt Linux или PyCharm), а можно через графический интерфейс "Settings --> Project Interpeter".

    ----

    Очевидно, что самай лучший способ установки -- с помощью pycharm.sh из дистрибутива JetBrains. Но, такая установки потребует разобраться с JDK внутри Alt Linux и сделать правильные настройки переменных $pycharm_jdk, $jdk_home/$java_home. Для разных версий PyCharm они могут отличаться, так что использование snap под Alt Linux, мне кажется, -- наиболее простой путь.
    Ответ написан
    Комментировать
  • Как установить mysqlclient-коннектор для Python под Alt Linux?

    Sergei_Erjemin
    @Sergei_Erjemin Автор вопроса
    Улыбайся, будь самураем...
    Из-за, что под Alt Linix dev-пакеты имеют то пристаку -dev, то -devel, для MariaDB процесс установки получися следующий:

    sudo apt-get install mariadb-client libmariadb3 libmariadb-devel python3-dev gcc


    После этого в виртуальное окружение mysqlclient ставится штатно:

    pip install mysqlclient

    Все это сработало, для дефолтного для Alt Linux, не текущий момент, Python 3.9.16:

    Collecting mysqlclient
      Using cached mysqlclient-2.2.0.tar.gz (89 kB)
      Installing build dependencies ... done
      Getting requirements to build wheel ... done
      Installing backend dependencies ... done
      Preparing metadata (pyproject.toml) ... done
    Building wheels for collected packages: mysqlclient
      Building wheel for mysqlclient (pyproject.toml) ... done
      Created wheel for mysqlclient: filename=mysqlclient-2.2.0-cp39-cp39-linux_x86_64.whl size=132574 sha256=c166b260e0fc2a846d40df5af021b1a8bd5e5507348571c2f4df23086d01dd26
      Stored in directory: /home/___/.cache/pip/wheels/aa/58/d4/2e7a1d266508fd74887c2f74ec1ae819509bae6711480d8666
    Successfully built mysqlclient
    Installing collected packages: mysqlclient
    Successfully installed mysqlclient-2.2.0
    Ответ написан
    Комментировать
  • Что должен знать в Linux Python разработчик?

    Sergei_Erjemin
    @Sergei_Erjemin
    Улыбайся, будь самураем...
    Для веба -- настроить nginx, uwsgi (или альтернативный CGI), развернуть виртуальное окружение, иногда крутить настройки SQL (понимать какие буфера на то влияют, иногда репликации) -- знать минимум. Но ведь нужны бывают и многопоточные решения на несколько серверов, а значит докерс, оркестрация... ну и пошло-поехало...

    Но в принципе --это все "дефолтные команды".
    Ответ написан
    5 комментариев
  • SSD для домашнего бука. Какой выбрать?

    Sergei_Erjemin
    @Sergei_Erjemin
    Улыбайся, будь самураем...
    Смотря какой ноут и смотря какая цена вопроса… В некоторых есть свободные mini PCI-E слоты. Карточка со встроенным SSD на такой слот объемом 128Gb стоит 90$ на ebay. Вполне бюджетно и шустро в комбинации с обычным HDD. Так же можно поствить гибридный диск )я выбрал такое решение при обновлении своего ноута). В нем, кроме обычного кеша, встроенный кеширующий 32GB SSD. По скорости от SSD не отличить, а объем и цена (750Gb b $130) просто радуют.
    Ответ написан