Localidades do Ubuntu incorretas para o aplicativo Python

3

Eu tenho um NGINX - > UWSGI - > Pilha do Django (python) instalada em uma AMI do Ubuntu no Amazon EC2. Eu tive um problema ao acessar um arquivo com caracteres unicode no nome. A saída exata do Django App (Mezanino) é

Access was attempted on a file that contains unicode characters in its path, but somehow the current locale does not support utf-8. You may need to set 'LC_ALL' to a correct value, eg: 'en_US.UTF-8'.

Agora, quando eu executo o comando locale , a saída é:

LANG=en_US.UTF-8
LANGUAGE=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=en_US.UTF-8

Para mim, tudo parece bem lá, então, em seguida, adicionei um código para imprimir as configurações de localidade na seção de código que gera o erro.

O resultado disso é:

locale.getdefaultlocale() = (None, None)
locale.getpreferredencoding() = 'ANSI_X3.4-1968'
sys.getdefaultencoding() = 'ascii'
sys.getfilesystemencoding() = 'ANSI_X3.4-1968'

Isso parece errado, mas não sei como consertar isso. Quando executo o mesmo código em um shell python, tudo fica muito melhor.

locale.getdefaultlocale() = ('en_US', 'UTF-8')
locale.getpreferredencoding() = 'UTF-8'
sys.getdefaultencoding() = 'ascii'
sys.getfilesystemencoding() = 'UTF-8'

Então, meu único pensamento é que em algum lugar na parte nginx e uwsgi a localidade não está sendo configurada corretamente. Existe alguma maneira de forçar um deles a usar um determinado local? Ou poderia ser algo com o usuário? É um usuário diferente que está executando o nginx e o uwsgi do que o que eu estava usando para executar esses comandos no shell.

    
por OpIvy 06.12.2013 / 18:06

0 respostas