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

Налаштування віртуального середовища в 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.

Коментарі

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

Дамп бази даних Postgresql локально

Що потрібно встановити локально (Ubuntu) Встанови клієнтські утиліти PostgreSQL: pg_dump , psql , pg_restore . sudo apt update sudo apt install postgresql-client Кроки міграції Ідея: не зберігати дамп на серверах. Зробити дамп з віддаленого сервера на свій локальний ПК, потім передати його на новий сервер і там відновити. 1) Створення дампу з віддаленого сервера локально pg_dump -h OLD_SERVER_IP -U OLD_USER -Fc -d OLD_DB -f dump_file.dump Пояснення ключів: -h (хост), -U (користувач), -Fc (custom format), -d (БД), -f (вихідний файл локально). 1.1) Варіант з розбиттям на частини (якщо треба) pg_dump -h OLD_SERVER_IP -U OLD_USER -Fc -d OLD_DB | split -b 10G - dump_file.dump.part_ Це створить локально файли типу dump_file.dump.part_aa , dump_file.dump.part_ab тощо. 2) Передача дампу на новий сервер Один файл: scp dump_file.dump NEW_USER@NEW_SERVER_IP:/tmp/ Або частинами: scp dump_file.dump.part_* NEW_USER@NEW_SERVER_IP:/tmp/ 3) Збирання файл...

Основи Next.js

Що таке Next.js? Next.js — це прогресивний фреймворк для розробки веб-застосунків на основі React. Він розширює можливості React, додаючи готову інфраструктуру для Server-Side Rendering (SSR), генерації статичних сторінок, маршрутизації через файлову систему, а також можливість створювати backend-ендпоінти прямо в проєкті. Чому він став популярним? Next.js швидко здобув популярність завдяки тому, що пропонує: SEO-дружні сторінки завдяки SSR / SSG; швидкий перший рендер (First Page Load); просту маршрутизацію без налаштування; розгортання в один клік через Vercel; вбудовану оптимізацію зображень та продуктивності. Чим відрізняється від класичного React У класичному React ми отримуємо лише клієнтську бібліотеку для побудови UI-компонентів. Усе інше (SSR, маршрути, API) треба налаштовувати вручну або через сторонні бібліотеки (наприклад, React Router, Redux, Express, etc.). Next.js — це уже повноцінний фреймворк. Він одразу має: серверний рендеринг...

ООП у TypeScript

Короткий вступ TypeScript додає статичну типізацію поверх JavaScript і підтримує класичні концепти ООП: класи , успадкування , інтерфейси , інкапсуляцію , поліморфізм та абстракції . Нижче — практичні приклади та пояснення. Класи — декларація, конструктор, властивості та методи class Person { public name: string; private age: number; protected email?: string; // необов’язкове static species = 'Homo sapiens'; constructor(name: string, age: number, email?: string) { this.name = name; this.age = age; this.email = email; } public greet(): string { return `Hi, I'm ${this.name}.`; } private getBirthYear(currentYear: number): number { return currentYear - this.age; } } const p = new Person('Ivan', 30, 'ivan@example.com'); console.log(p.greet()); // console.log(p.age); // помилка: 'age' приватне console.log(Person.species); Успадкування і перевизначення (extends, super) class Employee extends Person { ...

Створення проєкту на TypeScript, модулі

Крок 1. Ініціалізація проєкту Спочатку створимо нову теку та ініціалізуємо Node.js-проєкт за допомогою npm : mkdir my-typescript-app cd my-typescript-app npm init -y Крок 2. Встановлення TypeScript Додаємо TypeScript як dev-залежність: npm install --save-dev typescript ts-node @types/node - typescript — компілятор TypeScript - ts-node — дозволяє запускати TS-файли без попередньої компіляції - @types/node — типи для стандартних Node.js API Крок 3. Створення файлу tsconfig.json Ініціалізуємо конфігурацію TypeScript: npx tsc --init Приклад файлу tsconfig.json { "compilerOptions": { "target": "ES2020", // Версія JS у вихідному коді "module": "CommonJS", // Система модулів (для Node.js) "rootDir": "src", // Вхідна папка з TypeScript-кодом "outDir": "dist", // Куди компілюється код JS "str...

Інструменти для роботи з 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...