Что делать если нужно поставить какую-то Python-библиотеку а root-прав нет? То есть в систему библиотеку никак и ничего не поставить.
Есть как минимум два способа это решить правильно!
🔸 Сделать виртуальное окружение и ставить там что угодно.
Это позволит создать полностью независимое исполняемое окружение для ваших приложений.
Все библиотеки будут храниться в домашней директории юзера а значит доступ на запись имеется.
Создать очень просто:
python3 -m venv ~/venvs/myenvname
Теперь активируем окружение
# Linux
source ~/venvs/myenvname/bin/activate
# Windows
%userprofile%\venvs\myenvname\Scripts\activate.bat
Можно ставить любые библиотеки и запускать приложение.
Это стандартный метод работы с любым проектом. Если еще не используете его, то пора начинать. Даже при наличии root доступа!
🔸 Бывает, что нет возможности запустить приложение из своего виртуального окружения. Например, его запускает какой-то сервис от вашего юзера и вставить активацию окружения вы не можете.
В этом случае можно установить библиотеки для Python не глобально в систему, а только для юзера.
Выполните этот код в консоли:
python3 -m site
Вы получите что-то такое:
sys.path = [
'/home/user',
'/usr/lib/python37.zip',
'/usr/lib/python3.7',
'/usr/lib/python3.7/lib-dynload',
'/home/user/.local/lib/python3.7/site-packages',
...
]
USER_BASE: '/home/user/.local'
USER_SITE: '/home/user/.local/lib/python3.7/site-packages'
ENABLE_USER_SITE: True
Нас интересует параметр USER_SITE. Это путь к пользовательским библиотекам, которые доступны по умолчанию, если они есть.
Именно сюда будут устанавливаться модули если добавить флаг --user при установке чего-либо через pip
pip install --user requests
Для этой команды не нужны root-права.
После неё можно запускать системный интерпретатор без виртуальных окружений и установленная библиотека будет доступна для текущего юзера.
Параметр USER_BASE показывает корневую директорию для хранения user-библиотек. Её можно изменить с помощью переменной окружения PYTHONUSERBASE
export PYTHONUSERBASE=~/pylibs
python3 -m site
...
USER_BASE: '/home/user/pylibs'
USER_SITE: '/home/user/pylibs/lib/python3.7/site-packages'
Получается некоторое подобие виртуального окружения для бедных 😁 которое можно менять через эту переменную (не делайте так!Лучше venv!)
🔸 Дописывание пути в PYTHONPATH
Этот способ не входит в список "двух правильных", но тоже рабочий. Здесь придётся сделать всё несколько сложней.
Сначала ставим библиотеку в любое место указывая путь установки
pip3 install -t ~/mylibs modulename
Библиотека установится без привязки к какому-либо интерпретатору. То есть по умолчанию не будет видна. Теперь в нужный момент добавляем этот путь в sys.path или в PYTHONPATH.
Не буду советовать так делать. Единственный раз когда этот способ мне пригодился и решил поставленную задачу, это при создании общей библиотеки для кластера компьютеров.
Модули лежат в сети и подгружаются для всех из одного и того же места. То есть обновлять файлы требуется только один раз а не на всех хосты отдельно.
Минусы такого подхода:
▫️Нужно всем хостам пробить нужный путь в .bashrc или ещё куда-то чтобы он сетапился на старте.
▫️Чем больше хостов тем больше нагрузка на сеть. Иногда такой способ не подходит именно по этой причине. Тогда Ansible вам в помощь.
▫️Не очень подходит если хосты с разными операционками. Некоторые библиотеки различаются для Linux и Windows (там, где есть бинарники) и приходится мудрить более сложные схемы.
#tricks#basic
上週二(19日),初選47人案中45名罪成被告遭重判4年2個月至10年。台灣的聲援行動進一步擴大,近20個公民組織,包括在台港人團體「邊城青年」,於周一(25日)在台北召開聯合記者會,呼籲中共立即放人,並強烈譴責中共的倒行逆施。
亞太自由婦女協會理事長楊黃美幸怒吼道:「香港人在中共政府統治下,遠不如在英國的殖民統治,人及錢都想逃離香港,共產中國難道不會感到羞恥嗎?」
#47人案#台灣#香港#人權#中共
Last Tues (19th), 45 convicted defendants in the 47-person primary election case were sentenced to heavy terms ranging from 4 years and 2 months to 10 years. The support movement in Taiwan has intensified, with nearly 20 civic organizations, including the Hong Kong group "Border City Youth," holding a joint press conference in Taipei on Monday (25th) to call for the immediate release of those imprisoned and to strongly condemn the Chinese government’s actions.
Chairwoman of the Asia-Pacific Alliance for Freedom and Democracy, Yang Huang-Mei-Hsing, exclaimed, "Hongkongers under the rule of the Chinese Communist Party are far worse off than under British colonial rule. People and money are trying to flee Hong Kong. Doesn't Communist China feel ashamed?"
#HK47#Taiwan#HongKong#HumanRights#CCP
何桂藍以白羅斯反對派領袖科列斯尼科娃為切入點,強調了面對壓迫時的選擇和勇氣。她回顧了2019年的社會運動,並指出2020年民主派初選是香港「最後一次公平和自由的選舉」。她不認罪是為了捍衛61萬港人的政治表達,批評當局試圖將選民描繪成被外國操控的「傀儡」。
何桂藍認為初選案是香港民主的轉折點,深刻反映了人們因恐懼而沉默的現實。她堅信,真正的民主是眾聲喧嘩,而自由是在選擇中承擔責任。
#何桂藍#香港民主#自由#勇氣#初選#支持香港
Gwyneth Ho draws on the example of Belarusian opposition leader Maria Kolesnikova to emphasize the choices and courage one must embody in the face of oppression. She reflects on the 2019 social movements and asserts that the 2020 pro-democracy primary was Hong Kong's "last fair and free election." Her decision to not plead guilty was to defend the political expression of 610,000 Hongkongers, criticizing the authorities for portraying voters as "puppets" manipulated by foreign powers.
Gwyneth views the primary case as a turning point for Hong Kong democracy, revealing the reality of silence born from fear. She firmly believes that true democracy is a cacophony of voices, and freedom comes with the responsibility of choice.
#GwynethHo#HongKongDemocracy#HK47#SupportHongKongx
在初選47人案中,45名罪成被告被重判4年2個月至10年。美國國務院譴責判決,並將對多名執行港區《國安法》的官員實施簽證限制。英國首相施紀賢(Keir Starmer)未發表聲明,受到批評。
自施紀賢當選以來,他的行動與承諾背道而馳,英國需要將他趕下台!
#初選47人案#香港#國安法#美國譴責#施紀賢#人權#趕下台
In the 47-person primary election case, 45 defendants received heavy sentences. The U.S. State Department condemned the verdict and announced visa restrictions on Hong Kong officials. UK Prime Minister, Keir Starmer has remained silent, facing criticism.
Ever since he was elected, Starmer has done the opposite of his promises. The UK needs to kick him out!
#HK47#HongKong#NationalSecurityLaw#USCondemnation#UK#施紀賢#HumanRights#KickHimOut