Что делать если нужно поставить какую-то 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
中共在英統戰組識
還記得11月27日發生的倫敦唐人街港人遇襲事件嗎?
Post by IG @justitiahk
當日多個英國華人團體在倫敦唐人街舉辦反歧視集會,表面上是宣揚反歧視,實質為中共洗白。有手足亦在同日同地舉行「和你lunch」活動,不過集會結束後,十多名來自主辦方的人士,突然衝向數名在場手足拳打腳踢,甚至用金屬武器施襲,有人被打至頭破血流。
這些中共極權延伸的勢力是何人?我們且看看參與的集會團體:
民權法律中心 (Min Quan Legal Centre)
英國監察組 (The Monitoring Group)
英國福建華僑華人聯合總會(The Federation of UK Fujian Chinese)
倫敦華埠商會 (London Chinatown Chinese Association)
全英華人社團聯合總會(Confederations of Chinese Association UK)
全英中國學生學者聯誼會 (Chinese Students and Scholars Association UK)
英國北京聯合會 (UK Beijing Association)
英國福建同鄉聯誼總會 (UK Fujianese Association)
劍橋中國中心 (Cambridge Chinese Community Centre)
百祥塔藝術中心 (Pagoda Arts Centre Liverpool)
南安普敦中華藝術團 (Chinese Arts Southampton)
這些組織看似是平平無奇的組織,實則上它們是中共在民主國家的滲透,明裏暗裏做統戰工作,舉例「全英中國學生學者聯誼會」是旗幟鮮明的中國駐英大使館官方組織;舉辦集會的「英國福建華僑華人聯合總會」以及支持組織「倫敦華埠商會」,前年5月底曾在親北京報章刊登廣告,支持制訂《港區國安法》。
#UK#統戰#支共禍患#NeverTrustCCP#共匪#共賊#evilCCP#fxxkCCP#TakeDownTheCCP#天滅中共全黨死清光
立陶宛週五宣布驅逐三名中國大使館人員,限一周內離境,並向北京發送外交照會。自2021年立陶宛允許台灣設立代表處以來,兩國關係已惡化,最近因中國船隻涉嫌破壞波羅的海兩條海底光纜而進一步緊張。
立陶宛外交部表示,驅逐原因為「違反《維也納外交關係公約》及國際法」。立陶宛將與瑞典和芬蘭成立聯合調查小組,調查光纜被切斷事件。中共中國始終尋求干涉他國事務,甚至摧毀其他國家。
#立陶宛#波羅的海#海底電纜#russia#evilCCP#NeverTrustCCP#TakeDownCCP
On Friday, Lithuania announced the expulsion of three Chinese embassy staff, ordering them to leave within a week and sending a diplomatic note to Beijing. Tensions have worsened since Lithuania allowed Taiwan to establish a representative office in 2021, and recently over allegations of Chinese ships sabotaging two undersea cables in the Baltic Sea.
The Lithuanian Foreign Ministry cited "violations of the Vienna Convention and international law" as the reason for the expulsion. Lithuania will also form a joint investigation team with Sweden and Finland to probe the cable damage. Communist China is always seeking opportunities to interfere in other countries, even destroying them.
#Lithuania#BalticSea#UnderseaCables#Russia#EvilCCP#NeverTrustCCP#TakeDownCCP