Nếu còn dùng upstart, khi viết file cấu hình cho nó trong /etc/init/xyz.conf bạn phải set locale cho nó vì mặc định, upstart không sử dụng biến môi trường nào ngoài TERM và PATH.
http://upstart.ubuntu.com/cookbook/#job-environment
Nếu không set locale, một vấn đề có thể gặp phải, ví dụ như khi bạn chạy code python bằng gunicorn, thông qua upstart. Function os.path.isfile có thể raise Exception khi nhận tên file là một đoạn string chứa kỹ tự không nằm trong bảng mã ASCII:
if os.path.isfile(content_string) and not is_raw:Thêm dòng này vào file upstart:
File "/usr/local/pymi/env/lib/python3.4/genericpath.py", line 30, in isfile
st = os.stat(path)
UnicodeEncodeError: 'ascii' codec can't encode character '\xfa' in position 2: ordinal not in range(128)
env LANG=en_US.UTF-8Kiểm tra locale trên Python:
env LC_CTYPE="en_US.UTF-8"
env LC_ALL=en_US.UTF-8
$ python3
>>> import locale
>>> locale.getlocale()
('en_US', 'UTF-8')
Hết.
HVN at http://www.familug.org/ and http://pymi.vn
Đăng ký học #Python , lớp tại chi nhánh #HàNội khai giảng giữa tháng 4, 2017: https://pymi.vn/
Nhập email vào http://invite.pymi.vn/ để nhận thư mời tham gia forum hỏi đáp Python, Django, Golang, Linux ...
No comments:
Post a Comment