运行apache时python locale.setlocale失败

时间:2012-07-24 21:00:48

标签: python django-templates apache2 django-views locale

我有一个简单的Ubuntu / django / apache服务器设置,我在格式化我希望在Django模板中显示的一些数字时遇到了问题。当我使用Django测试服务器在本地(即在我的工作机器上)运行代码时,所有格式都没有问题。

同样,当我在服务器上打开IDLE时,我可以这样做:`

  
    
      

>>>导入区域设置

             

>>> locale.setlocale(locale.LC_ALL, '')

             

'的en_US.UTF-8'

             

>>> '{0:N}'。格式(42424242)

             

'42,424,242'`

    
  

然而,每当我尝试运行apache服务器并测试代码时,它都会失败并且我得到如下输出:

  
    
      

'42424242'

    
  

我在

上添加了一个print语句
  
    
      

locale.setlocale(locale.LC_ALL, '')

    
  

调用我的view.py文件,我在apache错误日志中找到的所有内容都是

  
    
      

[Tue Jul 24 15:26:56 2012] [错误] C

    
  

可能是apache进程没有访问本地语言环境设置的权限吗?

2 个答案:

答案 0 :(得分:1)

我设法通过显式调用

来解决问题
  
    
      

locale.setlocale(locale.LC_ALL, '的en_US.UTF-8')

    
  

我不确定为什么没有en_US.UTF-8参数它没有工作,因为本地设置是'en_US.UTF-8'。如果有人知道为什么我需要在apache进程运行代码时使用显式调用,而不是当我在其他任何地方测试它时,我仍然会对答案感兴趣,但我会将其标记为已解决。

答案 1 :(得分:1)

它的错误,因为默认语言环境不提供位置信息。 你可以在这里阅读更多内容:

https://code.djangoproject.com/ticket/5846