Việc tạo môi trường ảo Python và chia sẻ môi trường ảo Python sẽ rất cần thiết khi chúng ta làm việc với team và với nhiều dự án khác nhau. Bài viết này sẽ giúp bạn làm quen với Conda (Miniconda) để thực hiện các công việc như: tạo môi trường ảo Python, chia sẻ môi trường ảo Python, xóa môi trường ảo Python, clone môi trường ảo Python với hai cách thông qua shell script trong Terminal và thao tác trong Navigator. Cùng bắt đầu nhé!
Tham khảo thêm
Vì sao nên chọn Miniconda
Có một số thuật ngữ mà bạn nên đọc qua để hiểu vì sao Lucid Gen lựa chọn Miniconda để sử dụng và hướng dẫn cho bạn.
- Conda: Conda là một hệ thống quản lý gói và quản lý môi trường mã nguồn mở, đa nền tảng. Ban đầu nó được phát triển để giải quyết những khó khăn về quản lý packages và môi trường ảo cho Python và ngày nay là một trình quản lý gói phổ biến cho Python và R. – Wikipedia
- Miniconda: Miniconda bằng Conda + Python cơ bản. Không chứa sẵn các packages, bạn cần packages nào thì có thể tự cài đặt vào. Chủ yếu giúp bạn quản lý mỗi trường ảo Python. Không chiếm nhiều dung lượng của máy tính.
- Anaconda: Anaconda bằng Miniconda + hơn 150 packages chất lượng bao gồm sẵn sau khi cài đặt. Thực tế thì chẳng ai dùng hết các packages của nó, và nó chiếm khá nhiều dung lượng trên máy tính, gấp 10 lần Miniconda (khoảng 10 GB sau khi cài đặt môi trường ảo). Nhưng bù lại thì nó sẽ thích hợp cho những ai muốn cài thêm nhiều IDLE để sử dụng mà không mất nhiều thời gian, không lo xung đột.
- Anaconda Navigator: Anaconda Navigator chỉ là một ứng dụng giúp cho Conda (Miniconda, Anaconda) có giao diện trực quan, nó không chứa các packages sẵn như khi cài đặt Anaconda Distribution.
Vì vậy đối với những bạn chỉ cần Python và công cụ quản lý môi trường ảo Python thì Miniconda (kết hợp Anaconda Navigator) là sự lựa chọn tuyệt vời cho bạn. Còn nếu bạn muốn sử dụng Anaconda thì hãy xem bài viết cách cài đặt Python bằng Anaconda để cài đặt Anaconda, sau đó quay lại bài viết này để xem cách quản lý môi trường ảo Python vì các thao tác sử dụng Miniconda và Anaconda là giống nhau.


Cách cài đặt Miniconda
Bạn truy cập trang docs.conda.io/en/latest/miniconda.html để lụa chọn file cài đặt theo hệ điều hành máy tính của bạn.
- Bạn nên tải trình cài đặt dưới dạng EXE và PKG cho Windows và macOS.
- Còn với Linux thì chỉ có thể cài đặt bằng bash trong Terminal.
Cài đặt Miniconda bằng trình cài đặt
Mở trình cài đặt Miniconda lên và nhấp Continue cho đến khi cài đặt thành công Miniconda.


Cài đặt Miniconda bằng bash
Mở Terminal (SSH) trên lên và chạy lần lược các lệnh sau để cài đặt Miniconda trên Linux.
# Download
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
# Install
bash Miniconda3-latest-Linux-x86_64.sh
# Input yes if Terminal ask any question
# Delete bash file after installed
rm -rf Miniconda3-latest-Linux-x86_64.sh


Cập nhật Conda
Chúng ta nên cập nhật Conda sau khi cài đặt Miniconda vì phiên bản mới thì sẽ tốt hơn.
# Check current conda version
conda --version
# Update conda
conda update conda


Cài đặt Anaconda Navigator
Bạn có thể cài đặt Anaconda Navigator nếu bạn không thích sử dụng shell script trong Terminal quá nhiều.
# Install navigator
conda install anaconda-navigator
# Remove navigator
conda remove anaconda-navigator


Cách tạo môi trường ảo Python với Miniconda
Bạn không cần phải tạo môi trường ảo Python cho từng dự án, nhưng bạn nên tạo ít nhất một môi trường ảo để làm việc. Khi có môi trường ảo thì chúng ta sẽ dễ dàng chia sẻ cho team biết rằng dự án đó hoạt động tốt trên Python phiên bản nào, cần có những packages gì.
Tạo môi trường ảo Python trong Terminal
Mở Terminal và nhập lệnh dưới đây để tạo một môi trường ảo Python, lưu ý thay lucidgen
thành tên môi trường ảo Python của bạn, và 3.9
thành phiên bản Python mà bạn muốn.
conda create -n lucidgen python=3.9


Khi Terminal hiển thị những câu hỏi Yes/No thì bạn hãy chọn Yes, như hình bên dưới thì điền y
và Enter.


Chúng ta đã tạo được một môi trường ảo Python chỉ với một lệnh đơn giản trong Terminal. Bây giờ bạn đã có thể cài đặt packages và bắt đầu lập trình với môi trường ảo Python này.
Tạo môi trường ảo Python trong Navigator
Cách tạo môi trường ảo Python này dành cho những bạn yêu thích giao diện trực quan và đã cài đặt Anaconda Navigator. Mở Anaconda Navigator > Environments > Create > điền tên môi trường ảo Python mới > Create.


Dù bạn tạo môi trường ảo Python trong Terminal hay trong Navigator thì kết quả đều như nhau. Bây giờ bạn có thể thêm môi trường ảo Conda vào Pycharm để bạn đang sử dụng Pycharm.
Cách cài đặt packages cho môi trường ảo Python
Có 2 cách để cài đặt packages cho môi trường ảo Python được tạo bởi Conda, đó là pip install và conda install. Bạn chỉ nên chọn 1 trong 2 cách cho một môi trường ảo. Mặc dù khi mix cả 2 cách thì các packages vẫn có thể hoạt động. Nhưng khi chia sẻ môi trường ảo Python cho người khác, họ sẽ gặp rắc rối ở bước import.
So sánh | Pip | Conda |
---|---|---|
Phiên bản của packages | Mới nhất. | Cập nhật chậm hơn hoặc chỉ có một vài phiên bản hoạt động tốt được lưu trữ. |
Sự đa dạng của packages | Đa dạng nhất. | Có thể thiếu một số packages. |
Thư viện lưu trữ | Pypi.org | Anaconda.org/conda-forge |
Thường được sử dụng | Hầu hết các dự án | Một số dự án mà các packages của Pip bị xung đột với nhau. |
Cài đặt packages trong Terminal
Kích hoạt môi trường ảo Python của bạn trước, sau đó dùng Pip hoặc Conda để cài đặt một package. Các lệnh nhập vào Terminal giống như dưới đây.
conda activate lucidgen
# With Pip
pip install pandas
# With conda-forge
conda install -c conda-forge pandas
Ví dụ khi cài đặt Pandas cho môi trường ảo Python bằng Pip.


Ví dụ khi cài đặt Pandas cho môi trường ảo Python bằng Conda.


Cài đặt packages trong Navigator
Trong Navigator thì bạn chỉ cài đặt được các packages từ kênh conda-forge. Nhấp vào môi trường của bạn để kích hoạt nó > chọn filter là All > tìm package > chọn đúng package cần cài đặt > nhấp nút Apply ở dưới > nhấp nút Apply khi popup hiện ra.


Cách xem danh sách môi trường ảo Python
Trong Navigator thì bạn sẽ thấy ngay danh sách các môi trường ảo Python đang có. Còn trong Terminal thì bạn nhập lệnh dưới đây để kiểm tra danh sách môi trường ảo Python của bạn.
# Way 1
conda env list
# Way 2
conda info --envs


Cách xóa môi trường ảo Python với Miniconda
Hãy thận trong khi xóa một môi trường ảo Python, các dự án liên quan đến môi trường ảo đó có thể sẽ không hoạt động được nữa vì thiếu các packages cần thiết. Bạn hãy cân nhắc đến việc backup lại môi trường ảo trước khi xóa chúng.
Xóa môi trường ảo Python trong Terminal
Có 2 cách để xóa một môi trường ảo Python trong Terminal. Cách thứ nhất là dùng lệnh xóa môi trường ảo Python của Conda, cách thứ hai là dùng lệnh xóa thư mục của môi trường ảo.
# Way 1
conda remove --name lucidgen --all
# Way 2
## Check environment list
conda env list
## Remove environment, please the replace the path you see when checking environment list
rm -rf opt/miniconda3/envs/lucidgen/
Ví dụ cách xóa môi trường ảo Python bằng lệnh của Conda.


Ví dụ cách xóa môi trường ảo Python bằng lệnh xóa thư mục chứa môi trường ảo.


Xóa môi trường ảo Python trong Navigator
Chọn môi trường ảo mà bạn muốn xóa trong Navigator > nhấp Remove bên dưới > nhấp Remove khi popup hiện ra.


Cách chia sẻ môi trường ảo Python
Phần này sẽ giúp bạn backup, khôi phục, và chia sẻ môi trường ảo Python cho người khác một cách chính xác. Bạn cần hiểu khái quát như thế này trước.
- Có 2 kiểu file để backup hay xuất một môi trường ảo Python, đó là YML (environment.yml) và TXT (requirements.txt). Bạn có thể đặt tên khác cho 2 file này.
- Có 2 cách xuất file requirements.txt là dùng Pip và Conda, lưu ý là xuất bằng cách nào thì nhập cũng phải theo cách đó (Pip hoặc Conda).
- Có 2 kiểu khôi phục hay nhập một môi trường ảo Python, một là tạo môi trường ảo Python trực tiếp từ file backup, hai là tạo một môi trường ảo Python mới, sau đó cài đặt các packages từ file backup.
Thông thường thì mọi người sẽ xuất file requirements.txt bằng Pip để chia sẻ môi trường ảo Python cho team của họ vì không chắc rằng ai cũng dùng Conda.
Xuất môi trường ảo Python dưới dạng YML
Định dạng YML được sử dụng cho việc backup, chia sẻ môi trường ảo Python cho những người có sử dụng Conda.
Xuất file environment.yml trong Terminal
Kích hoạt môi trường ảo Python của bạn trước, sau đó nhập dòng lệnh export như dưới đây để xuất file environment.yml trong Terminal. Bạn có thẻ chọn thư mục khác trên máy tính thay vì Downloads như Lucid Gen.
# Activate your virtual environment
conda activate lucidgen
# Export to Downloads folder
conda env export > Downloads/environment.yml


Xuất file environment.yml trong Navigator
Chọn môi trường ảo Python của bạn > nhấp nút Backup ở dưới > nhấp nút Backup khi popup hiện ra > đặt tên file và chọn nơi lưu trữ rồi nhấp Save.


Nội dung trong file environment.yml sẽ có dạng như sau. Bạn có thể sử dụng file này để tạo một môi trường ảo Python mới bằng cách import hoặc chia sẻ môi trường ảo Python này cho người khác nếu họ có dùng Conda.


Xuất môi trường ảo Python dưới dạng TXT
Chúng ta chỉ xuất môi trường ảo Python dưới dạng TXT được trong Terminal. Tuy nhiên ở đây có 2 cách xuất file requirements.txt.
- Xuất file requirements.txt bằng Pip: Dùng Pip để nhập. Cần tạo môi trường ảo mới rồi nhập với kiểu cài đặt packages mới.
- Xuất file requirements.txt bằng Conda: Dùng Conda để nhập. Có thể nhập môi trường ảo trực tiếp, hoặc tạo môi trường ảo mới rồi nhập với kiểu cài đặt packages đều được.
Kích hoạt môi trường ảo của bạn trước, sau đó nhập lệnh xuất môi trường ảo như dưới đây.
conda activate lucidgen
# With Pip
pip freeze > Downloads/requirements.txt
# With conda-forge
conda list -e > Downloads/requirements.txt
Ví dụ xuất môi trường ảo Python thành file requirements.txt bằng Pip trong Terminal. Bạn có thể chọn thư mục khác thay vì Downloads như Lucid Gen.


File requirements.txt được xuất bằng Pip sẽ có nội dung ngắn gọn như hình bên dưới. Bạn hãy xóa dòng đầu tiên trước khi chia sẻ hoặc sử dụng nhé.


Ví dụ xuất môi trường ảo Python thành file requirements.txt bằng Conda trong Terminal.


File requirements.txt của Conda có nội dung rất rườm rà. Nó có thể được dùng để tạo môi trường ảo Python mới hoặc cài đặt packages bằng Conda.


Nhập môi trường ảo Python từ file YML
Chúng ta sẽ dùng Conda để khôi phục hay nhập một môi trường ảo Python từ một file YML.
Nhập môi trường ảo Python từ file environment.yml trong Terminal
Sử dụng lệnh dưới đây trong Terminal để nhập một môi trường ảo Python từ file YML. Mặc định thì môi trường ảo mới sẽ có tên giống môi trường ảo đã xuất. Nếu bạn muốn có tên mới thì bạn thêm tham số --name
và tên mới vào lệnh nhé.
# With the original name
conda env create -f Downloads/environment.yml
# With a new name
conda env create --name lucidgen_new --file Downloads/environment.yml


Nhập môi trường ảo Python từ file environment.yml trong Navigator
Nhấp nút Import trong Navigator > chọn file YML khi popup hiện ra > đặt tên cho môi trường > nhấp nút Import.


Nhập môi trường ảo Python từ file TXT
Đối với file TXT thì bạn chỉ có thể nhập môi trường ảo Python trong Terminal, hãy nhớ là bạn đã xuất file requirements.txt bằng cách nào thì khi nhập cũng dùng cách đó (Pip hoặc Conda).
Cài đặt packages từ file requirements.txt với Pip
Bạn cần tạo một môi trường ảo Python mới và cài đặt packages từ file requirements.txt nếu nó được xuất ra từ Pip.
# Create a new virtual environment
conda create -n lucidgen_new python=3.9
# Activate the new virtual environment
conda activate lucidgen_new
# Install packages from the requirements.txt file
pip install -r Downloads/requirements.txt


Nhập môi trường ảo Python từ file requirements.txt với Conda
Conda cho phép bạn tạo môi trường mới bằng file requirements.txt nếu nó được xuất bằng Conda. Thay tên môi trường ảo mới và đường dẫn file requirements.txt vào dòng lệnh bên dưới để nhập môi trường ảo Python.
conda create --name lucidgen_new --file Downloads/requirements.txt


Cài đặt packages từ file requirements.txt với Conda
Cách này tương tự như Pip, chúng ta sẽ tạo một môi trường ảo Python mới, kích hoạt nó và cài đặt packages từ file requirements.txt với Conda.
# Create a new virtual environment
conda create -n lucidgen_new python=3.9
# Activate the new virtual environment
conda activate lucidgen_new
# Install packages from the requirements.txt file
conda install --file Downloads/requirements.txt


Cách clone một môi trường ảo Python với Conda
Nếu bạn muốn clone một môi trường ảo Python để sử dụng cho chính mình thì phần này sẽ đơn giản hơn là chia sẻ môi trường ảo Python.
Clone môi trường ảo Python trong Terminal
Nhập dòng lệnh dưới đây trong Terminal để clone một môi trường ảo Python.
conda create --name lucidgen_new --clone lucidgen
# lucidgen_new: The cloned environment name
# lucidgen: The original environment name


Clone môi trường ảo Python trong Navigator
Chọn môi trường ảo Python trong Navigator > nhấp nút Clone ở dưới > đặt tên cho môi trường ảo mới khi popup hiện ra > nhấp nút Clone trên popup.


Cách kiểm tra danh sách packages Python đã cài đặt
Phần này là Lucid Gen bonus thêm thôi, bạn sẽ xem được danh sách các packages đã cài đặt cho một môi trường ảo trong Navigator một cách dễ dàng khi nhấp vào nó. Còn trong Terminal thì bạn dùng lệnh dưới đây để xem nhé.
# Show all packages list
conda list -n lucidgen
# Show a specific package
conda list -n myenv pandas


Câu hỏi thường gặp
Vì sao gặp lỗi khi nhập môi trường ảo Python từ file TXT?
Nếu bạn mix cả hai cách cài đặt packages (Pip và Conda) thì bạn sẽ gặp lỗi khi nhập. Cài đặt packages bằng Pip thì nên xuất bằng Pip và nhập cũng bằng Pip (nhớ xóa dòng đầu tiên trong file requirements.txt). Và tương tự với Conda.
Làm sao để gỡ cài đặt Miniconda?
Xóa thư mục chứa Miniconda là được vì bạn sẽ không thấy nó ở dạng ứng dụng để gỡ cài đặt.
Nên chia sẻ môi trường ảo Python ở định dạng nào?
Hãy chia sẻ file requirements.txt được xuất bằng Pip (nhớ xóa dòng đầu tiên) cùng với file environment.yml được xuất bằng Conda thể hiện sự chu đáo của bạn với các đồng nghiệp.
Lời kết
Cuối cùng cũng hết bài, Lucid Gen hy vọng rằng bài viết này sẽ giúp bạn thành thạo hơn với việc quản lý, tạo, chia sẻ môi trường ảo Python. Hãy lưu lại nó để xem lại khi cần thiết, hãy chia sẻ cho những người bạn để giúp họ đi nhanh hơn trong việc quản lý môi trường ảo Python bạn nhé. Nếu bạn có câu hỏi cần giải đáp thì đừng ngần ngại để lại bình luận bên dưới bài viết này nhé.