Mặc định phiên bản Python trên Centos6 chỉ là 2.6.x. Đây là phiên bản được release vào năm 2008, quá cũ để làm những thứ hay ho vào thời điểm hiện tại. Centos (cùng hệ với Redhat) có truyền thống giữ nguyên phiên bản của các phần mềm đi kèm với một bản Centos nào đó trong một thời gian cực kỳ dài (nghe nói 10 năm). Do đó muốn sử dụng phiên bản mới hơn của một phần mềm nào đó chỉ có cách tự build từ source code hoặc thông qua các repository. Việc tự build phần mềm từ source code đảm bảo sẽ luôn sử dụng được phiên bản mới nhất nhưng với trình độ cùi bắp của mình thì chỉ build được những thứ standard. Còn muốn build những tool đi kèm hay build môi trường dành cho develop (**-devel chẳng hạn) thì vất vả vô cùng (và thường thì sau một hồi quậy tanh bành thì mình bỏ luôn box và restore lại từ đầu). Việc cài đặt thông qua repository thì đơn giản hơn rất nhiều. Có một repository SCL (Software Collections) được chính Redhad hỗ trợ. Do đó thông thường khi muốn sử dụng phiên bản mới của một phần mềm nào đó, thì SCL là lựa chọn có thể chấp nhận được. ## SCL (Software Collections) là gì: Về cơ bản, SCL cũng là một repository được Redhat hỗ trợ chính thức. Do nó là repository nên các phần mềm trong đó có thể cài đặt dễ dàng thông qua Yum. SCL được Redhat hỗ trợ để chứa những phiên bản mới nhất của các phần mềm và các phần mềm cài đặt từ SCL có thể cài đặt và sử dụng song song với những phần mềm được cài mặc định mà không gây xung đột. Thông tin thêm về SCL - Software Collections: https://access.redhat.com/documentation/en-US/Red_Hat_Developer_Toolset/1/html/Software_Collections_Guide/sect-What_Are_Software_Collections.html ## Cài đặt Python 3.5 thông qua SCL: ~~~ # Cài đặt repo centos-release-scl-rh $ sudo yum install centos-release-scl-rh # Cài đặt Python3.5 và các tool đi kèm $ sudo yum install rh-python35-python.x86_64 rh-python35-python-devel.x86_64 rh-python35-python-libs.x86_64 rh-python35-python-pip.noarch rh-python35-python-tools.x86_64 rh-python35-python-virtualenv.noarch ~~~ ## Bật môi trường để sử dụng Python 3.5 vừa cài: Những phần mềm được cài thông qua SCL mặc định sẽ không thể sử dụng được nếu chưa kích hoạt môi trường cho chúng. Để kích hoạt môi trường cho Python3.5 vừa cài, sử dụng câu lệnh sau: ~~~ $ scl enable rh-python35 bash ~~~ Câu lệnh trên thực chất là thiết lập các biến môi trường cần thiết cho việc chạy Python 3.5 vừa cài đặt. Cụ thể các biến môi trường được cài đặt như sau: ~~~ $ vim /opt/rh/rh-python35/enable export PATH=/opt/rh/rh-python35/root/usr/bin${PATH:+:${PATH}} export LD_LIBRARY_PATH=/opt/rh/rh-python35/root/usr/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}} export MANPATH=/opt/rh/rh-python35/root/usr/share/man:$MANPATH export PKG_CONFIG_PATH=/opt/rh/rh-python35/root/usr/lib64/pkgconfig${PKG_CONFIG_PATH:+:${PKG_CONFIG_PATH}} export XDG_DATA_DIRS="/opt/rh/rh-python35/root/usr/share:${XDG_DATA_DIRS:-/usr/local/share:/usr/share}" ~~~ Sau khi kích hoạt SCL, kiểm tra phiên bản Python: ~~~ $ python -V # Trước khi kích hoạt SCL: Python 2.6.6 # Sau khi kích hoạt SCL: Python 3.5.1 ~~~ ## Tự động bật môi trường Python3.5 mỗi khi đăng nhập: Nếu như việc mỗi lần muốn sử dụng Python3.5 lại mỗi lần kích hoạt SCL quá phiền phức thì có thể thêm dòng sau vào `~/.bashrc` để tự động bật môi trường Python3.5 mỗi khi đăng nhập qua SSH. ~~~ # Mở và thêm dòng sau vào cuối cùng của file $ vim ~/.bashrc source /opt/rh/rh-python35/enable ~~~ ## Sử dụng Python3.5 với Cron: Với cách làm từ nãy đến giờ thì có thể sử dụng được Python 3.5 thông qua terminal một cách bình thường. Tuy nhiên khi muốn tự động chạy script Python thông qua Cron thì cách trên không có tác dụng. Muốn thiết lập để Cron chạy script Python bằng Python3.5 cần thực hiện như sau: ~~~ * * * * * scl enable rh-python35 'python /path/to/script.py' ~~~