Если у Вас есть копия xargs
это поддерживает параллельное выполнение с -P
, можно просто сделать
printf '%s\0' *.png | xargs -0 -I {} -P 4 ./pngout -s0 {} R{}
Для других идей Bash Wooledge Wiki имеет раздел в статье управления процессами, описывающей точно, что Вы хотите.
Если Вам не нужны пакеты 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
и стандарт иерархии файловой системы:
Как правило, в распределении, рекомендуется использовать диспетчер пакетов распределения. Можно, конечно, установить вещи с помощью зернышка (или, в мире жемчуга, cpan), или скомпилировать и установить вещи сами. Однако, когда Вы делаете это, диспетчер пакетов распределения не знает о них и не может управлять зависимостями или обновлениями для них.
Используя зернышко в значительной степени эквивалентно компиляции и установке Вашего собственного пакета. Сделайте это, если Вы должны, но предпочесть диспетчер пакетов распределения.
pip
(по крайней мере глобально через sudo
или как корень) - я просто получил некоторых site-package/...
уже существует ошибки когда pacman
попробованный для установки некоторых зависимостей
– Tobias Kienzler
12.10.2015, 19:55
В дополнение к остальным ответам здесь, ознакомьтесь с пакетом python-virtualenv
. Это может быть очень полезно, если вы занимаетесь разработкой на нескольких проектах с различными зависимостями с несовпадением номеров версий.
https://wiki.archlinux.org/index.php/Python_VirtualEnv
Также остерегайтесь, что существует два варианта pip и virtualenv. Один для Python 2 и один для Python 3. Если при установке произошёл сбой с синтаксической ошибкой, возможно, вы пытаетесь использовать не ту версию.
также короткий и сладкий: Список кошек | XARGS RM
Это предполагает, что у вас есть файл с именем «Список» всех вредоносных файлов .php, и что вы находитесь в каталоге, содержащем файлы .php (просто чтобы быть понятными, но смотрю, вы уже поняли).
Если какая-либо из имени файлов содержится в новых линиях, это будет опасно для запуска , особенно потому, что вы уже знаете, что они были построены вредоносным противником. Если у вас есть список файлов файлов в текстовом файле, вы можете заранее проверить список и убедиться, что ни одна из строк не удалит файлы, которые вы хотите сохранить.
Кроме того, если злоумышленник удалось получить злонамеренные сценарии PHP на этот хост, Это может не быть вашей самой большой проблемой . Я только отвечаю только на вопрос, который вы поставили, и @soubunmei дал лучший ответ, потому что она знала немного больше о команде поиска, чем я, но ни один ответ гарантирует безопасность . Извините, если это не было понятно и благодаря @Soubunmei и @michaelhomer за указываю на мой небрежный язык. Вы должны поговорить с профессионалом кибербезопасности, если вы считаете, что кто-то злобно, возможно, достигли повышенных привилегий на хосте.
Я лично подозреваю, что есть приятное «продление и дату», чтобы сделать это, как вы спросили, что некоторые люди могут найти более элегантны, но так как у вас уже есть список, почему бы не использовать его?
I Протестировали это в файле с именем «Список», который содержал линии:
file1
file2
, и эти файлы были на моем рабочем столе. Это работало, как ожидалось. I Сильно Рекомендую вам сначала проверить это на небольшом этапе, чтобы увидеть, как он будет вести себя, а также резервное копирование каталога до любых удаленных файлов массового файла. Пространство жесткого диска намного дешевле, чем время программистов!
-121--209995-Для определенных пакетов (те, которые я больше всего не хочу взломать), я делаю свой собственный пакет, используя это:
https://github.com/bluepeppers/pip2arch
Затем создайте и установите произведенную PKGBUILD.
Я оставляю Virtualenvs для пакетов, которые я мог бы изменить или взломать.
Правильный способ установки пакетов 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'
Если пакета нет в 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
установку пакетов только в эту среду, а не на всю систему .
conda
или virtualenv
:Установка пакетов Python из Jupyter Notebook
Если вы будете следовать этим правилам, ваш ArchLinux не сломается и не будет проблем с зависимостями между PACMAN и PIP.
Надеюсь, это будет полезно!
python
и жаль, что я не знал это преждеsudio
побеждение вещей. Спасибо за это. – Hendy 14.01.2017, 19:06