macOS cài sẵn Python. Nhưng đó là Python 2.7 — phiên bản hiện đã deprecated (ngừng phát triển bởi cộng đồng Python).
Toàn bộ cộng đồng Python đã chuyển sang Python 3.x (phiên bản hiện tại lúc viết là 3.9). Python 4.x sẽ ra mắt sớm, nhưng hoàn toàn tương thích ngược.
Nếu bạn chạy Python từ Terminal macOS, thậm chí sẽ thấy cảnh báo:
Cho đến khi Apple đặt Python 3.x làm mặc định, bạn phải tự cài đặt.
Một lệnh duy nhất để chạy Python 3
Đối với một số bạn, lệnh này đã đủ. Bạn chạy Python 3 bằng lệnh này (có số 3 ở cuối).
python3
Nếu chỉ cần thế, chúc bạn ngày vui vẻ và coding vui vẻ.
Nhưng nếu muốn hệ thống quản lý phiên bản Python đúng chuẩn để theo dõi nhiều phiên bản — và kiểm soát chính xác phiên bản nào dùng — hướng dẫn này sẽ chỉ cách làm chính xác.
Cách cài Homebrew trên Mac
Trước tiên cài Homebrew — trình quản lý gói mạnh mẽ cho Mac.
Mở Terminal. Dùng Spotlight (command+space) gõ "terminal".
Bây giờ ở dòng lệnh, cài phiên bản Homebrew mới nhất bằng lệnh:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
Terminal sẽ yêu cầu quyền Super User. Bạn nhập mật khẩu đăng nhập Mac và nhấn Enter.
Homebrew sẽ hỏi xác nhận cài đặt. Nhấn Enter để tiếp tục (hoặc phím khác nếu đổi ý).
Cách cài pyenv để quản lý phiên bản Python
Bây giờ cài PyEnv. Thư viện này giúp chuyển đổi giữa các phiên bản Python (trường hợp cần chạy Python 2.x, và chờ đón Python 4.0).
Chạy lệnh:
brew install pyenv
Bây giờ bạn có thể cài phiên bản Python mới nhất.
Cách dùng pyenv cài Python hoặc cập nhật phiên bản Python
Chỉ cần chạy lệnh sau:
pyenv install 3.9.2
Lưu ý: bạn thay 3.9.2 bằng phiên bản Python mới nhất. Ví dụ khi Python 4.0.0 ra mắt, chạy:
pyenv install 4.0.0
Xử lý sự cố cài đặt pyenv
Nếu gặp lỗi "C compiler cannot create executables", cách đơn giản nhất là cài lại Xcode của Apple.
Xcode là công cụ của Apple bao gồm thư viện C và các công cụ Python dùng khi chạy trên macOS. Xcode dung lượng ~11 GB, nhưng bạn nên cập nhật. Có thể chạy khi ngủ.
Tải Xcode mới nhất tại đây. Tôi làm vậy sau khi nâng cấp lên macOS Big Sur, sau đó mọi lệnh hoạt động tốt. Chạy lại pyenv install 3.9.2 và nó sẽ chạy được.
Cách thiết lập PATH macOS cho pyenv (Bash hoặc ZSH)
Trước hết cập nhật đường dẫn Unix để PyEnv tương tác với hệ thống.
Đây là giải thích dài về cách PATH hoạt động trong macOS (và Unix), từ repo GitHub của pyenv.
Khi bạn chạy lệnh như
pythonhoặcpip, hệ điều hành tìm qua danh sách thư mục để tìm file thực thi trùng tên. Danh sách này nằm trong biến môi trườngPATH, các thư mục cách nhau bởi dấu hai chấm:
/usr/local/bin:/usr/bin:/bin
Thư mục trong
PATHđược tìm từ trái sang phải, nên file thực thi khớp ở thư mục đầu danh sách ưu tiên hơn thư mục cuối. Ví dụ:/usr/local/bintìm trước, rồi/usr/bin, rồi/bin.
pyenv hoạt động bằng cách chèn thư mục shims lên đầu
PATH:
$(pyenv root)/shims:/usr/local/bin:/usr/bin:/bin
Qua quá trình rehashing, pyenv duy trì shims trong thư mục đó khớp với mọi lệnh Python trên mọi phiên bản Python đã cài —
python,pip, v.v.
Shims là file thực thi nhẹ chỉ chuyển lệnh của bạn cho pyenv.
Cách cập nhật .bash_profile trong Bash (mặc định macOS):
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bash_profile
Sau đó chạy:
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bash_profile
Lưu ý: nếu thư mục pyenv_root không có /bin (chỉ có /shims), chạy lệnh này thay thế:
echo 'export PATH="$PYENV_ROOT/shims:$PATH"' >> ~/.bash_profile
Thêm PyEnv Init vào terminal. Chạy lệnh nếu dùng Bash (mặc định macOS):
echo -e 'if command -v pyenv 1>/dev/null 2>&1; then\n eval "$(pyenv init -)"\nfi' >> ~/.bash_profile
Reset terminal:
reset
Cách thiết lập PATH macOS cho pyenv trong ZSH hoặc OhMyZSH
Nếu dùng ZSH (hoặc OhMyZSH) thay vì Bash mặc định, chỉnh file .zshrc:
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.zshrc
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.zshrc
Sau đó chạy:
echo -e 'if command -v pyenv 1>/dev/null 2>&1; then\n eval "$(pyenv init --path)"\n eval "$(pyenv init -)"\nfi' >> ~/.zshrc
Cách đặt phiên bản Python làm mặc định toàn cục (Bash hoặc ZSH)
Đặt phiên bản Python mới nhất làm global — nghĩa là mặc định khi chạy ứng dụng Python.
Chạy lệnh:
pyenv global 3.9.2
Lại thay 3.9.2 bằng phiên bản mới nhất.
Kiểm tra phiên bản global:
pyenv versions
Kết quả mong đợi:
Bước cuối: Đóng Terminal và khởi động lại
Sau khi khởi động lại Terminal, chạy lệnh python sẽ khởi chạy phiên bản Python mới thay vì phiên bản cũ.
Chúc mừng. Cảm ơn bạn đã đọc, và chúc coding vui vẻ!