Thứ năm, 12/12/2019 | 00:00 GMT+7

Cách quản lý Python với Pyenv và Direnv

Cho dù bạn chỉ mới bắt đầu hay bạn là một nhà phát triển Python dày dạn, bạn có thể thấy việc quản lý môi trường Python của bạn thật tẻ nhạt và khó khăn. Quản lý các version Python, thư viện và các phụ thuộc khác nhau giống như chơi trò chơi ngẫu nhiên trong đó đối tượng không bị đánh bất kỳ trò chơi nào khác; nếu bạn làm vậy, xác suất xảy ra hiệu ứng xếp tầng của những hạt bụi bay khắp nơi mà bạn không muốn sẽ sớm xuất hiện.

Trong hướng dẫn này, bạn sẽ cài đặt pyenv để quản lý môi trường python, cài đặt direnv để tự động cấu hình và tạo nguồn virtualenv cho các dự án, đặt version Python global và version Python local cho các dự án và cấu hình virtualenv và tự động nguồn venv khi di chuyển vào folder dự án của bạn. Đến cuối hướng dẫn này, bạn có thể cài đặt bất kỳ version python hợp lệ nào, cài đặt và cấu hình môi trường ảo cho từng dự án và mang lại sự tỉnh táo khỏi sự hỗn loạn.

Yêu cầu

Ta sẽ cài đặt cả pyenvdirenv thông qua homebrew để dễ dàng quá trình cài đặt. Trước khi bắt đầu, hãy cài đặt homebrew nếu bạn chưa có.

Làm việc với pyenv

Để bắt đầu, bạn sẽ thấy cách làm việc với pyenv.

Cài đặt pyenv

Để bắt đầu mọi thứ, ta sẽ cài đặt pyenv với homebrew và thêm pyenv init cần thiết vào file ~/.bashrc của ta .

$ brew install pyenv $ echo 'eval "$(pyenv init -)"' >> ~/.bashrc # initialize pyenv on new shells $ source ~/.bashrc # reinitialize bashrc to reflect changes in your current shell 

Sau khi nó được cài đặt, hãy dành một chút thời gian để kiểm tra môi trường của ta trông như thế nào. Trên một hệ thống mới , bạn sẽ thấy một cái gì đó tương tự như sau:

$ which pyenv /usr/local/bin/pyenv $ pyenv versions * system $ which pip /usr/local/bin/pip $ which python /usr/local/bin/python 

Đây là một ảnh chụp nhanh khá chuẩn. Khi bạn thực thi python version , bạn sẽ nhận thấy * system , như tham chiếu ngụ ý, đây là version python của hệ thống . Dấu hoa thị biểu thị mã binary python hiện tại có nguồn root trong ${PATH} . Một nguyên tắc nhỏ là để hệ thống binary một mình. Nếu bạn muốn xem danh sách các version python mà pyenv có thể cài đặt cho bạn, hãy sử dụng pyenv install --list .

$ pyenv install 2.7.15 $ pyenv install 3.7.0 $ pyenv versions * system (set by /Users/iamjohnnym/.pyenv/version)   2.7.15   3.7.0 

Cấu hình các yêu cầu cơ bản

Bây giờ, hãy nâng cấp pip vì rất có thể, nó đã cài đặt version cũ hơn. Lệnh sau sẽ lặp lại các version đã cài đặt của bạn và cập nhật pip lên version mới nhất.

for VERSION in $(pyenv versions --bare) ; do   pyenv shell ${VERSION} ;   pip install --upgrade pip ; done 

Vì lợi ích của quy trình làm việc mong muốn, ta muốn cài đặt py2venv cho các version Python 2.x để ta có thể bắt chước cách python 3.x cài đặt virtualenv. python -m venv .venv .

for VERSION in $(pyenv versions --bare | egrep '^2.') ; do   pyenv shell ${VERSION} ;   pip install py2venv ; done 

Đặt version Python global

Mặc dù ta đã cài đặt pyenv , nó vẫn sẽ mặc định là system . Để thay đổi điều này, hãy đặt python 3.7.0 làm version global của ta :

$ pyenv global 3.7.0 $ pyenv versions   system   2.7.15 * 3.7.0 (set by /Users/iamjohnnym/.pyenv/version) $ which python /Users/iamjohnnym/.pyenv/shims/python 

Ta đã cài đặt và hoạt động pyenv . Hãy chuyển sang direnv .

Làm việc với direnv

direnv là một tiện ích tiện dụng cho phép bạn tạo một file được đặt trong bất kỳ folder nào mà bạn muốn có chức năng như .bashrc . Khi nào bạn nhập folder có file này, shell của bạn sẽ tự động thực thi nó. Các khả năng là vô tận nhưng với mục đích của bài đăng này, ta sẽ sử dụng nó để cấu hình python virtualenv dựa trên file .python-version và sau đó kích hoạt nó cho ta . Mục đích tạo dòng phát triển liền mạch. Không cần phải lo lắng về việc cấu hình hoặc kích hoạt virtualenv theo cách thủ công; hãy để máy tính của bạn làm công việc cho bạn.

Cài đặt direnv

Cài đặt đơn giản với homebrew:

$ brew install direnv 

direnv hiện đã được cài đặt và sẵn sàng khai thác. Hãy thử một dự án mẫu.

Tạo một dự án mới

Hãy bắt đầu một dự án. Ta sẽ tạo một folder mới, cài đặt version python local , cài đặt file .envrc và kích hoạt nó.

$ cd -p ~/python-projects/pyenv-tutorial $ cd $_ # if you're unaware, $_ will execute the last argument of your command $ pwd /Users/iamjohnnym/ python-projects/pyenv-tutorial $ pyenv local 3.7.0 $ cat .python-version 3.7.0 

Cấu hình file môi trường

Đến đây, ta đã sẵn sàng tạo file .envrc của .envrc . Với editor yêu thích của bạn, hãy tạo file đó và thêm các nội dung sau:

# check if python version is set in current dir if [ -f ".python-version" ] ; then     if [ ! -d ".venv" ] ; then         echo "Installing virtualenv for $(python -V)"         # if we didn't install `py2venv` for python 2.x, we would need to use         # `virtualenv`, which you would have to install separately.         python -m venv .venv     fi     echo "Activating $(python -V) virtualenv"     source .venv/bin/activate fi # announce python version and show the path of the current python in ${PATH} echo "Virtualenv has been activated for $(python -V)" echo "$(which python)" 

Lưu các file . Nếu bạn đã làm điều này thông qua một trình soạn thảo shell, chẳng hạn như vim . Bạn sẽ thấy thông báo sau, direnv: error .envrc is blocked. Run direnv allow to approve its content . Đừng lo lắng vì đây là một tính năng bảo mật để ngăn việc tự động thực thi file . Khi nào file này được thay đổi, nó cần được phê duyệt thủ công trước khi tự động thực thi lại. Để kích hoạt nó, chỉ cần gõ direnv allow từ dir dự án.

$ direnv allow direnv: loading .envrc Installing virtualenv for Python 3.7.0 Activating Python 3.7.0 virtualenv Virtualenv has been activated for Python 3.7.0 /Users/iamjohnnym/.personal/tutorials/pyenv-direnv/.venv/bin/python direnv: export +VIRTUAL_ENV ~PATH 

Kết luận

Đến đây bạn có các công cụ cần thiết để quản lý các version python khác nhau và các phụ thuộc của dự án!


Tags:

Các tin liên quan

Cách tạo trình tạo lớp Python cho mã VS
2019-12-12
Cách thực hiện phân tích cảm xúc trong Python 3 bằng Bộ công cụ ngôn ngữ tự nhiên (NLTK)
2019-09-26
Cách thiết lập một sổ ghi chép Jupyter với Python 3 trên Debian 10
2019-08-29
Cách cài đặt Python 3 và thiết lập môi trường lập trình cục bộ trên macOS
2019-08-16
Cách cài đặt Python 3 và thiết lập môi trường lập trình cục bộ trên macOS
2019-08-16
Cách cài đặt Python 3 và thiết lập môi trường lập trình cục bộ trên macOS
2019-08-16
Cách cài đặt Python 3 và thiết lập môi trường lập trình trên Debian 10
2019-08-05
Cách cài đặt bản phân phối Python Anaconda trên Debian 10
2019-07-09
Cách cài đặt Phân phối Python Anaconda trên Ubuntu 18.04
2019-04-18
Cách áp dụng thị giác máy tính để xây dựng bộ lọc chó dựa trên cảm xúc trong Python 3
2019-04-03