Содержание статьи
Первая доза бесплатно
Итак, instld, как и положено приличному модулю для Python, ставится одной командой:
pip install instld
Теперь пишем instld в консоли и видим приглашение к вводу текста.
`$ instld` `⚡ INSTLD REPL based on` `Python 3.11.9 (v3.11.9:de54cf5be3, Apr 2 2024, 07:12:50) [Clang 13.0.0 (clang-1300.0.29.30)] on darwin` `Type "help", "copyright", "credits" or "license" for more information.` `>>>`
То, что ты сейчас видишь, — это безумная магия. Какая — расскажу чуть позже, а сейчас убедимся, что перед нами рабочий интерпретатор Python.
`>>> 5 + 5`
`10`
`>>> import sys`
`>>> sys.version`
`'3.11.9 (v3.11.9:de54cf5be3, Apr 2 2024, 07:12:50) [Clang 13.0.0 (clang-1300.0.29.30)]'`
`>>> print("it's", 'just', 'a', 'REPL')`
`it's just a REPL`
`>>>`Ну да, обычный REPL. А теперь давай импортируем какой‑нибудь пакет, который у тебя еще не установлен.
`>>> import pandas as pd`
`Collecting pandas`
` Downloading pandas-2.2.3-cp311-cp311-macosx_11_0_arm64.whl.metadata (89 kB)`
` ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 89.9/89.9 kB 143.4 kB/s eta 0:00:00`
`Collecting numpy>=1.23.2 (from pandas)`
` Using cached numpy-2.1.1-cp311-cp311-macosx_14_0_arm64.whl.metadata (60 kB)`
`Collecting python-dateutil>=2.8.2 (from pandas)`
` Using cached python_dateutil-2.9.0.post0-py2.py3-none-any.whl.metadata (8.4 kB)`
`Collecting pytz>=2020.1 (from pandas)`
` Downloading pytz-2024.2-py2.py3-none-any.whl.metadata (22 kB)`
`Collecting tzdata>=2022.7 (from pandas)`
` Downloading tzdata-2024.2-py2.py3-none-any.whl.metadata (1.4 kB)`
`Collecting six>=1.5 (from python-dateutil>=2.8.2->pandas)`
` Using cached six-1.16.0-py2.py3-none-any.whl.metadata (1.8 kB)`
`Downloading pandas-2.2.3-cp311-cp311-macosx_11_0_arm64.whl (11.3 MB)`
` ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 11.3/11.3 MB 153.5 kB/s eta 0:00:00`
`Using cached numpy-2.1.1-cp311-cp311-macosx_14_0_arm64.whl (5.4 MB)`
`Using cached python_dateutil-2.9.0.post0-py2.py3-none-any.whl (229 kB)`
`Downloading pytz-2024.2-py2.py3-none-any.whl (508 kB)`
` ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 508.0/508.0 kB 80.8 kB/s eta 0:00:00`
`Downloading tzdata-2024.2-py2.py3-none-any.whl (346 kB)`
` ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 346.6/346.6 kB 178.2 kB/s eta 0:00:00`
`Using cached six-1.16.0-py2.py3-none-any.whl (11 kB)`
`Installing collected packages: pytz, tzdata, six, numpy, python-dateutil, pandas`
`Successfully installed numpy-2.1.1 pandas-2.2.3 python-dateutil-2.9.0.post0 pytz-2024.2 six-1.16.0 tzdata-2024.2`
`[notice] A new release of pip is available: 24.0 -> 24.2`
`[notice] To update, run: python3.11 -m pip install --upgrade pip`
`>>> pd.DataFrame({'lol': [1, 2, 3], 'kek': [4, 5, 6]})`
` lol kek`
`0 1 4`
`1 2 5`
`2 3 6`
`>>> pd.__version__`
`'2.2.3'`
`>>>`Как видишь, pandas скачался и импортировался прямо на лету. Он подключен и работает.
Теперь попробуем запустить небольшой скрипт через instld. Создадим файл script., который будет что‑нибудь делать. Для простоты снова используем пример с pandas:
import pandas as pdprint(pd.DataFrame({'lol': [1, 2, 3], 'kek': [4, 5, 6]}))Запускаем:
`$ instld script.py` `...` ` lol kek` `0 1 4` `1 2 5` `2 3 6`
И снова работает.
Под конец еще немного магии:
pip list | grep pandas
Пусто! То есть мы импортировали pandas прямо из сети, поиграли с ним, а когда закончили, никакого мусора не осталось. Безотходное производство!
Кое-что потяжелее
Фокусы, которые я показал, любопытны и могут быть полезны в определенных условиях, но у нас тут журнал «Хакер», а не клуб любителей потеребить питона. Давай сделаем кое‑что хакерское. Что‑то, что сделает уязвимой всю экосистему пакетов Python...
Продолжение доступно только участникам
Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте
Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее
Вариант 2. Оформи подписку на материалы по тегу
Если тебе интересна эта тема целиком, можно открыть доступ не к одному материалу, а ко всем платным статьям выбранного тега.
Вариант 3. Открой один материал
Заинтересовала статья, но нет возможности стать членом клуба «Xakep.ru»? Тогда этот вариант для тебя! Обрати внимание: этот способ подходит только для статей, опубликованных более двух месяцев назад.
Я уже участник «Xakep.ru»
