Перейти до основного вмісту

Налаштування віртуального середовища в Python

venv (Virtual Environment) — це віртуальне середовище Python, яке дозволяє створити ізольований набір бібліотек для окремого проєкту. Це означає, що різні проєкти можуть використовувати різні версії пакетів і навіть різні налаштування Python, не конфліктуючи між собою.

Наприклад, один проєкт може використовувати pandas==2.2, а інший — pandas==1.5. Завдяки venv ці версії працюватимуть незалежно.

Переваги використання venv

  • Ізоляція залежностей — пакети встановлюються лише для конкретного проєкту.
  • Відсутність конфліктів версій — різні проєкти можуть використовувати різні версії бібліотек.
  • Безпечність для системи — не потрібно встановлювати пакети глобально в Ubuntu.
  • Зручність перенесення — залежності можна зберегти у файл requirements.txt.
  • Краща інтеграція з VS Code та Jupyter Notebook.

Встановлення підтримки venv в Ubuntu

У деяких версіях Ubuntu підтримка venv встановлена не за замовчуванням. Для її встановлення виконайте:

sudo apt update
sudo apt install python3-venv

Або для конкретної версії Python:

sudo apt install python3.12-venv

Створення віртуального середовища

Створити середовище можна у папці проєкту або окремому каталозі.

Приклад створення в домашній папці:

python3 -m venv ~/venvs/jupyter

Після виконання буде створено структуру каталогів з окремим Python, pip та бібліотеками.

Активація venv

Щоб почати використовувати середовище:

source ~/venvs/jupyter/bin/activate

Після активації в терміналі з’явиться назва середовища:

(jupyter) user@pc:~$

Перевірити, який Python використовується:

which python
which pip

Результат має бути приблизно таким:

/home/user/venvs/jupyter/bin/python
/home/user/venvs/jupyter/bin/pip

Встановлення пакетів у venv

Усі бібліотеки потрібно встановлювати після активації середовища:

pip install pandas

Або кілька пакетів одночасно:

pip install pandas numpy matplotlib scikit-learn

Перевірити список встановлених пакетів:

pip list

Збереження залежностей проєкту

Для перенесення проєкту на інший комп’ютер можна зберегти список бібліотек:

pip freeze > requirements.txt

Встановлення залежностей з файлу:

pip install -r requirements.txt

Деактивація середовища

Для виходу з віртуального середовища:

deactivate

Налаштування venv у VS Code

Для роботи з Python та Jupyter Notebook у VS Code рекомендується встановити розширення:

  • Python (Microsoft)
  • Jupyter (Microsoft)

Відкрити палітру команд:

Ctrl + Shift + P

Вибрати:

Python: Select Interpreter

Потім вибрати Python з вашого venv або вручну вказати шлях:

/home/user/venvs/jupyter/bin/python

Використання venv у Jupyter Notebook (.ipynb)

Щоб віртуальне середовище було доступне у notebook, потрібно зареєструвати kernel:

python -m ipykernel install --user --name=jupyter --display-name "Python (jupyter)"

Після цього у VS Code при відкритті .ipynb можна натиснути Select Kernel і вибрати потрібне середовище.

Типові проблеми

Помилка ensurepip is not available:

sudo apt install python3-venv

VS Code не бачить venv:

  • Переконатися, що встановлені розширення Python і Jupyter.
  • Вручну вибрати interpreter.
  • Перезапустити VS Code.

Пакети не видно у notebook:

Переконатися, що встановлення відбувалося саме в активованому середовищі:

which pip
pip list

А також перевірити, що обраний правильний kernel у notebook.

Коментарі

Популярні публікації

Колекції в Elixir

Списки Що таке список у Elixir У Elixir список — це впорядкована колекція елементів, реалізована як однозв’язний список . Це означає, що кожен елемент (вузол) зберігає посилання на наступний, але не на попередній. Така структура дозволяє швидко додавати елементи на початок списку, але повільно доступати до довільного елементу. У Java подібну структуру представляє LinkedList — частина Java Collections Framework. Вона реалізована як двозв’язний список, що забезпечує зручне додавання/видалення елементів з початку або кінця списку. Створення списків У Elixir список створюється за допомогою квадратних дужок: list = [1, 2, 3, 4] Додавання елементів У Elixir новий елемент можна додати тільки на початок списку за допомогою оператора | : # Elixir list = [2, 3, 4] new_list = [1 | list] # [1, 2, 3, 4] Доступ до елементів У Elixir немає прямого доступу до елементів за індексом, але це можна зробити через Enum.at : Enum.at([10, 20, 30], 1) # 20 Ітерація по списку У Elixir ...

Інструменти для роботи з Node.js

Що таке npm? npm (Node Package Manager) — це офіційний пакетний менеджер для Node.js . Він дозволяє: Встановлювати сторонні бібліотеки та фреймворки Керувати залежностями проєкту Запускати скрипти (команди) через package.json Приклад ініціалізації проєкту з npm npm init -y Файл package.json (скорочений приклад) { "name": "my-project", "version": "1.0.0", "scripts": { "start": "ts-node src/index.ts", "build": "tsc" }, "dependencies": { "express": "^4.18.0" }, "devDependencies": { "typescript": "^5.0.0", "ts-node": "^10.0.0" } } Що таке tsconfig.json? tsconfig.json — це файл конфігурації для компілятора TypeScript, який визначає, як слід компілювати код. Приклад файлу tsconfig.json { "compilerOptions": { "target": "ES2020...

Атоми в мові програмування Elixir

Атоми в Elixir Атоми є фундаментальною концепцією в Elixir , що відіграє ключову роль у створенні надійних та масштабованих систем. В Elixir це специфічний тип даних, який є константою , незмінною , ідентифікованою за своїм ім'ям . Отже, атом в Elixir — це іменована константа, що представляє себе. Уявіть, що ви даєте унікальне ім'я певній речі, і це ім'я завжди посилається саме на цю річ, і ніколи на щось інше. Наприклад, атом :ok завжди буде означати саме успішне завершення операції, а не якесь інше значення. Технічно, атоми є похідними від чисел . Кожен унікальний атом зберігається у таблиці атомів, і йому присвоюється унікальний цілочисельний ідентифікатор. Це робить їх надзвичайно ефективними для порівняння: замість порівняння рядків (що є повільною операцією), Elixir порівнює цілочисельні ідентифікатори. Переваги та особливості використання атомів Переваги атомів: Ефективність. Завдяки своєму числовому представленню, порівняння атомів є дуже швидким. Це осо...

Встановлення PostgreSQL на Ubuntu-сервер

Встановлення Оновлюємо пакети та встановлюємо PostgreSQL: sudo apt update sudo apt install -y postgresql postgresql-contrib Перевіряємо статус сервісу: sudo systemctl status postgresql Якщо PostgreSQL не запущений, запустимо його: sudo systemctl start postgresql sudo systemctl enable postgresql Налаштування безпеки Зміна пароля: sudo -u postgres psql У консолі PostgreSQL: ALTER USER postgres PASSWORD 'міцний_пароль'; \q \q - вихід з консолі. Список основних команд для роботи з PostgreSQL можна переглянути за посиланням. За замовчуванням PostgreSQL слухає localhost (127.0.0.1). Щоб дозволити доступ із зовнішніх машин, редагуємо конфігурацію: sudo nano /etc/postgresql/17/main/postgresql.conf (замість 17 вкажи версію PostgreSQL, яку встановлено) Шукаємо рядок: #listen_addresses = 'localhost' та замінюємо на listen_addresses = '*' Зберігаємо (Ctrl + X, Y, Enter). Тепер редагуємо pg_hba.conf: sudo nano /etc/postgresql/17/main/pg_hba.conf...

Основи Node.js

Що таке Node.js? Node.js — це середовище виконання JavaScript поза браузером, побудоване на рушії Google V8 . Воно дозволяє запускати JavaScript на сервері, створюючи серверні застосунки з високою продуктивністю. Основні характеристики: Однопотокова модель з неблокуючим I/O Асинхронне виконання за допомогою event loop Висока продуктивність у роботі з мережевими запитами npm — найбільший реєстр пакетів Що таке event loop? Event loop — це механізм в Node.js, який дозволяє неблокуючим асинхронним операціям виконуватись у середовищі з єдиним потоком. Він постійно перевіряє наявність подій у черзі та викликає відповідні колбеки. Як працює однопоточність у Node.js? Node.js використовує один потік (main thread) для обробки JavaScript-коду. Операції, які займають час (мережеві запити, читання з файлової системи), делегуються до системних API або thread pool, і після завершення результат повертається у основний потік через event loop. Приклад: асинхронна о...