Что делать если нужно поставить какую-то 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
📝 INTERVIEW | Feminism and Revolution: A Conversation with Alejandra Laprea
In the latest VA interview, Alejandra Laprea, a popular feminist and member of the World March of Women, discusses how popular feminism in Venezuela continues to shape the revolution from the ground up. She stresses the importance of unity within the feminist movement, advocating for a collective, consensus-based agenda.
"We are experiencing a moment of setbacks at the global, continental, and national levels. In Venezuela, the feminist movement must come together and build a common agenda – one that is truly collective and based on consensus, rather than a mere compilation of different perspectives." States Alejandra.
🔗 Read the full interview here: https://shorturl.at/ppCss
#Feminism#Sanctions#WomensRights
🗒️🗣️ INTERVIEW | Aimee Zambrano: ‘Let Us Demand a Justice System with a Gender Perspective’
In the latest VA interview, activist and researcher Aimee Zambrano takes stock of gender violence in Venezuela and the necessary state policies to respond.
Through the Utopix Femicide Monitor, a platform that collects cases from open sources, Zambrano and her team have tracked patterns since 2019. However, Zambrano warns that other forms of violence are increasing, particularly attempted femicides, sexual abuse, and cases linked to the disappearance of women and girls.
She also argues that Venezuela needs a justice system with a gender perspective and a coordinated state response involving multiple ministries, including education, housing, and communication, to address gender violence.
Read the full interview here 👉🏾https://shorturl.at/tCbzV
#Feminisms#WomensRights
On 7 November 1800, Paris required women to get police permission to wear pants — keeping them from wearing pants without authorization.
[Read more here]
@googlefactss#pants#womensrights#law#France
🇿🇦"You Strike a Woman, You Strike a Rock"
Today is National Women’s Day in South Africa.
🗓 On August 9, 1956, a protest march was held in Pretoria against the extension of the humiliating Pass Laws to black women — apartheid-era regulations requiring all black South Africans to carry a “dompas” containing their personal details and movement permits.
✊ The march was led by four courageous women: Helen Joseph, Rahima Moosa, Sophie Williams, and Lillian Ngoyi. A monument in central Pretoria now honors their legacy.
📌 The slogan "You strike a woman, you strike a rock" became a powerful emblem of women’s strength and resilience: oppression only solidifies their resolve.
#SouthAfrica#NationalWomensDay#PassLaws#Apartheid#Pretoria#WomensRights#History
Female genital mutilation (FGM) also misleadingly known as "female circumcision" removes and injures parts of the female genitals for non-medical reasons. It is usually performed on girls from infancy to age 15. It has no health benefits and can cause severe pain, heavy bleeding, infection, shock, infertility, childbirth complications, and psychological trauma. Over 230 million women and girls worldwide have undergone FGM.
No religion requires or asks for this practice.
🚫✂️👧🌍⚖🪧
Warning, the link and information about this is not for the faint of heart. Research about this might be disturbing to some people.
[Read more at your own discretion]
[Poll about your opinions]
@googlefactss
#facts#humanrights#health#womensrights#education#globalissues#childabuse
Mojtaba Khamenei became Supreme Leader of Iran after his father, Ali Khamenei, was killed in a U.S.–Israeli airstrike. He leads with hard-line policies, controlling the military, security forces, and political decisions. For ordinary Iranians, this means strict government control, limited political freedom, limited internet, harsh enforcement of laws, and continued tensions with the West. Daily life and dissent will likely remain tightly restricted under his rule.
🕌🇮🇷⚔️
[Read more]
@googlefactss
#Iran#MojtabaKhamenei#SupremeLeader#politics#newsfacts#freeIran#protests#womensrights