为什么我有一个"语言环境错误"运行从Mac复制的jython脚本?

时间:2015-07-29 11:23:27

标签: python jython

我有一个小python框架,用于配置我们的"虚拟"测试系统。那些测试系统正在运行一些基于RH的Linux;在每个系统上,都有一个特定的JVM在运行。

现在我有这个奇怪的问题:

  1. 我的python框架将一个小的X.py脚本复制到远程系统(使用scp)
  2. 然后我的python框架使用ssh来触发我们特殊的" jython" wrapper ...简单地在远程系统/ JVM的上下文中加载和执行前面提到的X.py
  3. 如果运行我的框架的系统......是某种Linux(Ubuntu或RedHat)......一切正常。

    但现在我得到了我的第一个" Mac用户"使用我的框架。当他在Mac上本地运行我的框架时,他会获得远程调用jython的错误输出:

    b'Traceback (most recent call last):'
    b'  File "xxxjython", line 19, in <module>'
    b'    xxxjython.main()'
    b'  File "xxxjython.py", line 296, in main'
    b"    locale.setlocale(locale.LC_ALL, '')       # Read env var to initialize locale info"
    b'  File "/usr/lib/python2.6/locale.py", line 513, in setlocale'
    b'    return _setlocale(category, locale)'
    b'locale.Error: unsupported locale setting'
    

    我们可以通过在此处运行来解决/解决问题

    echo 'export LC_ALL=en_US.UTF-8' >>/etc/bashrc
    
    首先在远程系统上

    。但我仍然感到困惑 - 为什么我需要在远程系统上进行此导出;如果唯一的区别(与#34;工作&#34;设置相比)是系统的操作系统,我的&#34;主框架&#34;正在运行?

1 个答案:

答案 0 :(得分:1)

最后我发现这与“locales”如何与远程系统一起工作有关。有关详细信息,请访问here

我的解决方案是设置

os.environ [“LC_ALL”] =“C”

在我的框架内。这会“覆盖”所有区域设置;它从python流入我的ssh调用到远程jython调用。