Рекомендуемый способ установить пакеты Python на Arch

Если у Вас есть копия xargs это поддерживает параллельное выполнение с -P, можно просто сделать

printf '%s\0' *.png | xargs -0 -I {} -P 4 ./pngout -s0 {} R{}

Для других идей Bash Wooledge Wiki имеет раздел в статье управления процессами, описывающей точно, что Вы хотите.

37
04.09.2016, 00:43
5 ответов

Если Вам не нужны пакеты Python для всех пользователей затем, можно установить их в доме как это:

pip install --user packagename

Установка в Вашем доме не будет конфликтовать с диспетчером пакетов.

По умолчанию pip install --user установит в Вашем "пользовательском каталоге" сайта. Обычно это - что-то как: /home/lesmana/.local/lib/python3.6/site-packages.

Следующая команда распечатает, среди других, Вашего "пользовательского местоположения" сайта:

python -m site

Настроить местоположение установки:

PYTHONUSERBASE=$HOME/some/dir pip install --user packagename

это установит все под $HOME/some/dir

работать:

PYTHONUSERBASE=$HOME/some/dir $HOME/some/dir/bin/progname

См. руководство зернышка для получения дополнительной информации.


если Вы действительно хотите пакет Python для всех пользователей затем, лучшее место для установки его /opt. например, как это:

PYTHONUSERBASE=/opt/packagedir pip install packagename

(отметьте пропавших без вести --user)

и работать, как выше:

PYTHONUSERBASE=/opt/packagedir /opt/packagedir/bin/progname

Фоновое объяснение: /opt обычно подтверждается гну/дистрибутивами Linux как каталог, где локальный пользователь или системный администратор могут установить свой собственный материал. другими словами: диспетчер пакетов дистрибутивов обычно не затрагивает /opt. это более или менее стандартизировано в Стандарте Иерархии Файловой системы

Для комфорта для пользователей Вы все еще захотите записать сценарий обертки и поместить его в /bin или /usr/bin. Это все еще переносит риск столкновения с диспетчером пакетов распределения, но по крайней мере это - всего один файл сценария обертки. Таким образом, ущерб, который мог бы быть нанесен, минимален. Можно назвать обертку, пишут сценарий чего-то как local-foo или custom-foo далее минимизировать риск коллизии с диспетчером пакетов распределения.

Кроме того, можно изменить PATH включать /opt/bin и поместите свой сценарий обертки туда. Но это снова требует, чтобы Вы изменили (или некоторые) системные файлы где PATH определяется, который снова может быть перезаписан диспетчером пакетов распределения.

Короче говоря: если Вы хотите установить для всех пользователей, затем делают так в /opt. Куда Вы помещаете, сценарий обертки для комфорта является личным выбором.

Больше информации о /opt и стандарт иерархии файловой системы:

34
27.01.2020, 19:36
  • 1
    , по моему скромному мнению, это, вместе с указателем на установку virtualenvs, должно быть принятым ответом. –  ttsiodras 18.07.2016, 12:05
  • 2
    Тьфу. Более в новинку для python и жаль, что я не знал это прежде sudio побеждение вещей. Спасибо за это. –  Hendy 14.01.2017, 19:06

Как правило, в распределении, рекомендуется использовать диспетчер пакетов распределения. Можно, конечно, установить вещи с помощью зернышка (или, в мире жемчуга, cpan), или скомпилировать и установить вещи сами. Однако, когда Вы делаете это, диспетчер пакетов распределения не знает о них и не может управлять зависимостями или обновлениями для них.

Используя зернышко в значительной степени эквивалентно компиляции и установке Вашего собственного пакета. Сделайте это, если Вы должны, но предпочесть диспетчер пакетов распределения.

9
27.01.2020, 19:36
  • 1
    Необходимо абсолютно избегать использования pip (по крайней мере глобально через sudo или как корень) - я просто получил некоторых site-package/... уже существует ошибки когда pacman попробованный для установки некоторых зависимостей –  Tobias Kienzler 12.10.2015, 19:55
  • 2
    я просто получил такие ошибки, также. Я обновил все pip3 пакеты, и затем pacman отказался делать обновление системы из-за конфликтов. Я должен был удалить тот пакет и через pip3 и через pacman, затем сделать обновление системы и наконец установить пакет назад (использующий pacman, конечно). –  Al.G. 23.08.2017, 01:14

В дополнение к остальным ответам здесь, ознакомьтесь с пакетом python-virtualenv. Это может быть очень полезно, если вы занимаетесь разработкой на нескольких проектах с различными зависимостями с несовпадением номеров версий.

https://wiki.archlinux.org/index.php/Python_VirtualEnv

Также остерегайтесь, что существует два варианта pip и virtualenv. Один для Python 2 и один для Python 3. Если при установке произошёл сбой с синтаксической ошибкой, возможно, вы пытаетесь использовать не ту версию.

1
27.01.2020, 19:36

также короткий и сладкий: Список кошек | XARGS RM

Это предполагает, что у вас есть файл с именем «Список» всех вредоносных файлов .php, и что вы находитесь в каталоге, содержащем файлы .php (просто чтобы быть понятными, но смотрю, вы уже поняли).


Если какая-либо из имени файлов содержится в новых линиях, это будет опасно для запуска , особенно потому, что вы уже знаете, что они были построены вредоносным противником. Если у вас есть список файлов файлов в текстовом файле, вы можете заранее проверить список и убедиться, что ни одна из строк не удалит файлы, которые вы хотите сохранить.

Кроме того, если злоумышленник удалось получить злонамеренные сценарии PHP на этот хост, Это может не быть вашей самой большой проблемой . Я только отвечаю только на вопрос, который вы поставили, и @soubunmei дал лучший ответ, потому что она знала немного больше о команде поиска, чем я, но ни один ответ гарантирует безопасность . Извините, если это не было понятно и благодаря @Soubunmei и @michaelhomer за указываю на мой небрежный язык. Вы должны поговорить с профессионалом кибербезопасности, если вы считаете, что кто-то злобно, возможно, достигли повышенных привилегий на хосте.


Я лично подозреваю, что есть приятное «продление и дату», чтобы сделать это, как вы спросили, что некоторые люди могут найти более элегантны, но так как у вас уже есть список, почему бы не использовать его?

I Протестировали это в файле с именем «Список», который содержал линии:

file1
file2

, и эти файлы были на моем рабочем столе. Это работало, как ожидалось. I Сильно Рекомендую вам сначала проверить это на небольшом этапе, чтобы увидеть, как он будет вести себя, а также резервное копирование каталога до любых удаленных файлов массового файла. Пространство жесткого диска намного дешевле, чем время программистов!

-121--209995-

Для определенных пакетов (те, которые я больше всего не хочу взломать), я делаю свой собственный пакет, используя это:

https://github.com/bluepeppers/pip2arch

Затем создайте и установите произведенную PKGBUILD.

Я оставляю Virtualenvs для пакетов, которые я мог бы изменить или взломать.

6
27.01.2020, 19:36

Правильный путь для ArchLinux

Правильный способ установки пакетов PYTHON в ArchLinux — использовать PACMAN! Чтобы установить пакеты на Python3, вы должны использовать

sudo pacman -S python-'package'

Если вы хотите установить пакеты из Python2, вы должны использовать

sudo pacman -S python2-'package'

Большинство пакетов python находятся в репозиториях ArchLinux, а пакеты, которых нет в AUR (Пользовательские репозитории ArchLinux)-для этих пакетов необходимо скачать файл PKGBUILD и скомпилировать. После этого вы должны использовать PACMAN для завершения установки

.
makepkg -s
sudo pacman -U 'compiled-package'

Второй правильный путь для ArchLinux

Если пакета нет в AUR или PKGBUILD не работает, вы можете использовать PIP для его установки на Python3

sudo pip install 'python-package'

или Python2

sudo pip2 install 'python-package'

БУДЬТЕ ОСТОРОЖНЫ :, когда вы используете pip, одна и та же папка установки используется совместно с pacman, и в большинстве случаев, особенно когда вы обновляете все системные пакеты (sudo pacman -Suy), возникает ошибка конфликта. Вы всегда должны предпочесть первый вариант из приведенных выше. Чтобы решить конфликтные проблемы, просто удалите пакет pipи установите эквивалентный пакет наpacman(pip uninstall 'python-package').

Вы можете дать шанс virtualenvили дажеconda

Если вы планируете разработать какое-либо приложение или пакет Python, лучше использовать виртуальные среды.

Для приложений упаковки Python вам следует попробоватьpoetryв настоящее время это лучший вариант для управления приложением от начала до конца.Это гораздо лучший вариант, чем requirements.txt+ setup.py.

Другой более простой вариант — use python-virtualenv. Это может обеспечить переносимость вашего кода, а также поддерживать старые пакеты. Установите его с помощью

sudo pacman -S python-virtualenv

и попробуйте это

virtualenv -p /usr/bin/python3 yourenv
source yourenv/bin/activate
pip install package-name

При создании этой среды yourenvвы настроите pipустановку пакетов только в эту среду, а не на всю систему .

Эти другие ссылки могут быть полезны, если вы хотите узнать больше об управлении пакетами в Linux с помощью condaили virtualenv:

.

Установка пакетов Python из Jupyter Notebook

Код Python в ArchLinux

Если вы будете следовать этим правилам, ваш ArchLinux не сломается и не будет проблем с зависимостями между PACMAN и PIP.

Надеюсь, это будет полезно!

22
27.01.2020, 19:36

Теги

Похожие вопросы