Что делать если нужно поставить какую-то 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
🚢DHT Holdings приняла третий танкер VLCC в серии.
Компания DHT Holdings приняла в эксплуатацию новый VLCC DHT Gazelle, построенный на южнокорейской верфи HD Hyundai Samho.
Судно стало третьим в серии из четырёх заказанных танкеров, реализуемой в рамках программы расширения флота: ранее в этом году были переданы "DHT Antelope" и "DHT Addax", построенные на верфи Hanwha Ocean.
Ввод в строй новых танкеров VLCC является частью полностью профинансированной инвестиционной программы, направленной на усиление рыночных позиций и увеличение доходности компании.
Завершение серии, включая ожидаемую поставку танкера "DHT Impala", позволит DHT Holdings довести флот нефтетанкеров типа VLCC до 25 единиц, усилив присутствие в сегменте дальнемагистральных перевозок сырой нефти.
С технической точки зрения новый танкер соответствует современным требованиям: дедвейт 281 800 тонн, длина 331 метр, ширина 60 метров.
Судно классифицировано Lloyd’s Register и оснащено пропульсивной системой стандарта IMO Tier III, включая системы очистки выхлопных газов (scrubbers), что позволяет эффективно использовать высокосернистое топливо при соблюдении экологических ограничений и обеспечивает оптимизацию операционных затрат при сохранении соответствия международным нормам выбросов.
Расширение флота на фоне текущей конъюнктуры рынка танкеров VLCC отражает ставку на устойчивый спрос на перевозки сырой нефти и сохранение выгодной структуры тонна-миль, что поддерживает долгосрочную загрузку и доходность современных судов.
📌DHT Holdings — основана в 2005 году, публичная компания, зарегистрирована на NYSE, контролируется менеджментом и институциональными инвесторами.
#tankers#VLCC#shipping#DHT#oiltankers
🚀 Iran Proposes Permanent Ban on U.S. and Israeli Oil Tankers in Strait of Hormuz
Iran's parliamentary National Security Committee Chairman, Ebrahim Azizi, has announced a proposal to permanently prohibit oil tankers linked to the United States and Israel from passing through the Strait of Hormuz. According to Odaily, vessels associated with or traveling to Israel will also face restrictions. The ban extends to countries taking actions against the 'Resistance Front.'
#Iran#StraitOfHormuz#OilTankers#US#Israel#NationalSecurity#MiddleEast#Geopolitics
🚀 Malaysian Prime Minister Confirms Safe Passage of Oil Tankers Through Hormuz Strait
On April 10, Malaysian Prime Minister Anwar confirmed that six out of seven oil tankers heading to Malaysia have successfully navigated the Hormuz Strait. According to BlockBeats, the remaining vessel is currently undergoing repairs due to mechanical issues and remains docked at the port.
#MalaysianPrimeMinister#OilTankers#HormuzStrait#SafePassage#Anwar#MechanicalIssues#BlockBeats#Malaysia
🚀 Trump Highlights Incoming Oil Tankers to the U.S.
On April 11, U.S. President Donald Trump announced on his Truth platform that numerous empty oil tankers, including some of the world's largest, are currently en route to the United States. According to BlockBeats, these tankers are carrying some of the highest quality oil and natural gas globally. Trump emphasized that the U.S. oil reserves surpass the combined reserves of the second and third largest oil-producing countries, both in quantity and quality. He invited attention to this development, urging prompt action.
#Trump#OilTankers#USOilReserves#NaturalGas#Energy#GlobalOil#TrumpAnnouncement#USPresident#BlockBeats
🚀 Trump Criticizes Media Credibility and Comments on Iran's Military Status
U.S. President Donald Trump has criticized the credibility of what he terms 'fake news media,' asserting that they inaccurately portray Iran as winning. According to ChainCatcher, Trump claims that Iran is actually facing significant losses.
He stated that Iran's navy and air force have been dismantled, its air defense systems are ineffective, and its radar systems are inoperative. Additionally, missile and drone factories, along with the missiles and drones themselves, have largely been destroyed. Trump emphasized that Iran's long-standing leaders are no longer in power, leaving the country with little more than threats involving mines.
Trump further mentioned that Iran's 28 mine-laying boats have been sunk, and efforts are underway to clear the Strait of Hormuz. He noted that this action benefits many countries, including Japan, South Korea, France, and Germany, which have not taken similar steps themselves.
Interestingly, Trump observed that empty oil tankers from various countries are now heading to the United States to load oil.
#Trump#MediaCredibility#FakeNews#IranMilitary#IranNavalForces#StraitOfHormuz#InternationalRelations#OilTankers#USPolitics#MiddleEast