Quản lý python packages như thế nào cho đúng

by Hieu Nguyen
0 comment 98 views

Maven dùng pom để quản lý packages, Node thì có packages.json. Anh em python thì quản lý python packages bằng pip (Package installer for Python). Tuy nhiên khi sử dụng pip sẽ gặp phải tình huống các dự án khác nhau sử dụng dánh sách packages khác nhau. Vấn đề lớn hơn nữa có thể xảy ra tình huống 2 dự án nào đó sử dụng cùng package ở hai phiên bản khách nhau. Trong bài viết này tôi sẽ hướng dẫn các bạn cách quản lý python packages cho các dự án khác nhau mà không bị phụ thuộc vào nhau. Chúng ta cùng bắt đầu nhé.

Kiểm tra tình trạng hoạt động của brew nào:

[email protected] ~ % brew update && brew upgrade
Updated 1 tap (homebrew/core).
==> Updated Formulae
abcm2ps             consul              grails              pjproject
allure              dps8m               graphicsmagick      rancid
appstream-glib      erlang              i2p                 ratfor
byteman             flyway              jruby               stress-ng
camlp5              folly               libgphoto2          zydis
cargo-instruments   fonttools           libjwt
cfengine            gmsh                mill
clblast             gptfdisk            mongoose

Cài đặt python 3

brew install python

Mặc định MacOS sử dụng python 2

[email protected] ~ % python -V
Python 2.7.16
[email protected] ~ % python3 -V
Python 3.7.0

Các bạn cần thêm đoạn sau vào ~/.zshrc.

export PATH="/usr/local/opt/python/libexec/bin:/usr/local/sbin:$PATH"

Nếu đang mở Terminal bạn cần đóng Terminal lại rồi kiểm tra lại python version

[email protected] ~ % python -V
Python 3.7.6
[email protected] ~ % pip -V
pip 19.3.1 from /usr/local/lib/python3.7/site-packages/pip (python 3.7)

Cài đặt virtualenvvirtualenvwrapper

Với python các packages không được cài đặt cục bộ giống như node. Do đó chúng ta cần tạo ra các môi trường khác nhau với các packages khác nhau để sử dụng cho các dự án khác nhau.

Cài đặt virtualenv

pip install virtualenv

Cài đặt virtualenvwrapper

pip install virtualenvwrapper

Activate virtualenv mỗi khi bật khởi động Terminal

Các bạn thêm đoạn sau vào ~/.zshrc để virutalenv có thể dượcd khởi động mỗi khi bạn bật Terminal

export WORKON_HOME=$HOME/.virtualenvs
source /usr/local/bin/virtualenvwrapper.sh

Tiến hành tạo môi trưởng ảo và cài đặt packages mong muốn

  • Tạo môi trường ảo
[email protected] ~ % mkvirtualenv a
created virtual environment CPython3.7.6.final.0-64 in 515ms
  creator CPython3Posix(dest=/Users/hieunv/.virtualenvs/a, clear=False, global=False)
  seeder FromAppData(download=False, pip=latest, setuptools=latest, wheel=latest, via=copy, app_data_dir=/Users/hieunv/Library/Application Support/virtualenv/seed-app-data/v1)
  activators BashActivator,CShellActivator,FishActivator,PowerShellActivator,PythonActivator,XonshActivator
virtualenvwrapper.user_scripts creating /Users/hieunv/.virtualenvs/a/bin/predeactivate
virtualenvwrapper.user_scripts creating /Users/hieunv/.virtualenvs/a/bin/postdeactivate
virtualenvwrapper.user_scripts creating /Users/hieunv/.virtualenvs/a/bin/preactivate
virtualenvwrapper.user_scripts creating /Users/hieunv/.virtualenvs/a/bin/postactivate
virtualenvwrapper.user_scripts creating /Users/hieunv/.virtualenvs/a/bin/get_env_details
(a) [email protected] ~ %

Các bạn để ý dòng cuối cùng (a). Sau khi tạo xong thì zsh đã activate vào môi trường ảo.

  • Active vào môi trường ảo nếu môi trường chưa được active thì có thể làm như sau:
[email protected] ~ % workon a
(a) [email protected] ~ %
  • Khi muốn thoát khỏi môi trường ảo thì có thể làm như sau:
(a) [email protected] ~ % deactivate
[email protected] ~ %
  • Để cài đặt packages thì tiến hành cài đặt bằng pip như bình thường
pip install boto3

Sử dụng môi trường ảo với python 2

  • Cài đặt python 2
brew install python2
  • Tạo môi trường ảo sử dụng python bằng tham số -p
mkvirtualenv py2 -p python2

Export package list để install trên máy khác

(a) [email protected] ~ % pip freeze > requirements.txt
(a) [email protected] ~ % cat requirements.txt
boto3==1.12.11
botocore==1.15.11
docutils==0.15.2
jmespath==0.9.5
python-dateutil==2.8.1
s3transfer==0.3.3
six==1.14.0
urllib3==1.25.8

Cài đặt packages sử dụng requirements.txt

pip install -r requirements.txt

Tài liệu tham khảo:

  • https://swapps.com/blog/how-to-configure-virtualenvwrapper-with-python3-in-osx-mojave/
0 comment
7

Leave a Comment

* By using this form you agree with the storage and handling of your data by this website.

You may also like