Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何配置Python2.7以在OSX Mavericks系统上使用正确的Babel安装?_Python_Macos_Python 2.7_Osx Mavericks_Python Babel - Fatal编程技术网

如何配置Python2.7以在OSX Mavericks系统上使用正确的Babel安装?

如何配置Python2.7以在OSX Mavericks系统上使用正确的Babel安装?,python,macos,python-2.7,osx-mavericks,python-babel,Python,Macos,Python 2.7,Osx Mavericks,Python Babel,这是我的后续行动 我有一台OSX Mavericks机器,在那里我使用MacPorts安装了Python 2.7和Babel 1.3。 问题是,似乎我在该机器上至少有两个版本的babel,除了我使用MacPort安装的版本外,另一个版本没有安装CLDR区域设置数据文件,因此当我在应用程序目录中执行以下命令时: pybabel extract -o ./locale/messages.pot ./ 我收到以下错误消息: [...] writing PO template file to ./lo

这是我的后续行动

我有一台OSX Mavericks机器,在那里我使用MacPorts安装了Python 2.7和Babel 1.3。 问题是,似乎我在该机器上至少有两个版本的babel,除了我使用MacPort安装的版本外,另一个版本没有安装CLDR区域设置数据文件,因此当我在应用程序目录中执行以下命令时:

pybabel extract -o ./locale/messages.pot ./
我收到以下错误消息:

[...]
writing PO template file to ./locale/messages.pot
Traceback (most recent call last):
  File "/usr/local/bin/pybabel", line 8, in <module>
    load_entry_point('Babel==2.0-dev-20131218', 'console_scripts', 'pybabel')()
  File "/Library/Python/2.7/site-packages/Babel-2.0_dev_20131218-py2.7.egg/babel/messages/frontend.py", line 1151, in main
    return CommandLineInterface().run(sys.argv)
  File "/Library/Python/2.7/site-packages/Babel-2.0_dev_20131218-py2.7.egg/babel/messages/frontend.py", line 665, in run
    return getattr(self, cmdname)(args[1:])
  File "/Library/Python/2.7/site-packages/Babel-2.0_dev_20131218-py2.7.egg/babel/messages/frontend.py", line 947, in extract
    sort_by_file=options.sort_by_file)
  File "/Library/Python/2.7/site-packages/Babel-2.0_dev_20131218-py2.7.egg/babel/messages/pofile.py", line 427, in write_po
    messages = list(catalog)
  File "/Library/Python/2.7/site-packages/Babel-2.0_dev_20131218-py2.7.egg/babel/messages/catalog.py", line 552, in __iter__
    for name, value in self.mime_headers:
  File "/Library/Python/2.7/site-packages/Babel-2.0_dev_20131218-py2.7.egg/babel/messages/catalog.py", line 337, in _get_mime_headers
    locale='en')))
  File "/Library/Python/2.7/site-packages/Babel-2.0_dev_20131218-py2.7.egg/babel/dates.py", line 609, in format_datetime
    locale = Locale.parse(locale)
  File "/Library/Python/2.7/site-packages/Babel-2.0_dev_20131218-py2.7.egg/babel/core.py", line 284, in parse
    language = get_global('language_aliases').get(language, language)
  File "/Library/Python/2.7/site-packages/Babel-2.0_dev_20131218-py2.7.egg/babel/core.py", line 53, in get_global
    _raise_no_data_error()
  File "/Library/Python/2.7/site-packages/Babel-2.0_dev_20131218-py2.7.egg/babel/core.py", line 25, in _raise_no_data_error
  raise RuntimeError('The babel data files are not available. '
RuntimeError: The babel data files are not available. This usually happens because you are using a source checkout from Babel and you did not build the data files.  Just make sure to run "python setup.py import_cldr" before installing the library.
以下是在我的环境中定义的各种路径:

> echo $PATH
/opt/local/bin:/opt/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/local/git/bin:/Users/XXXXX/.rvm/bin
> echo $PYTHONPATH

> echo $DYLD_FALLBACK_LIBRARY_PATH

> echo $DYLD_LIBRARY_PATH

> echo $DYLD_FALLBACK_FRAMEWORK_PATH

> echo $DYLD_FRAMEWORK_PATH

>
pybabel是我使用以下命令创建的别名:

> alias pybabel='pybabel-2.7'

如何让babel在/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site packages/babel中查看babel版本?

我尝试设置PYTHONPATH,但出错了

我在pybabel用于MacPorts版本的localedata/的egg归档文件中创建了一个符号链接,它似乎起到了作用:

> cd /Library/Python/2.7/site-packages/Babel-2.0_dev_20131218-py2.7.egg/babel
> ln -s /opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/babel/localedata localedata
ln: localedata: Permission denied
> sudo ln -s /opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/babel/localedata localedata
Password:
>
如果有人有更好的建议或建议,请留下评论或其他答案。多谢各位

[后续行动2014-01-09]---------------------------------------------------------------------------------------------------------------------------------------

我仍然无法翻译“{%trans%}”标记,我发现您需要像这样在pybabel上显式使用-F选项(即使babel.cfg文件在当前目录中!):

以下是我的babel.cfg文件的内容:

[jinja2: **/templates/**.html]
encoding = utf-8
[python: python/*.py]
[extractors] 
jinja2 = jinja2.ext:babel_extract
但我收到了“ImportError:没有名为…”的错误消息,因为我没有正确配置jinja2和markupsafe。因此,我添加了两个符号链接:

> sudo ln -s /opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/jinja2 /Library/Python/2.7/site-packages/jinja2
> sudo ln -s /opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/markupsafe /Library/Python/2.7/site-packages/markupsafe
终于成功了!我在messages.pot文件中获得了“{%trans%}”标记的内容

然而,我不知道这是否是最好的解决方案

[jinja2: **/templates/**.html]
encoding = utf-8
[python: python/*.py]
[extractors] 
jinja2 = jinja2.ext:babel_extract
> sudo ln -s /opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/jinja2 /Library/Python/2.7/site-packages/jinja2
> sudo ln -s /opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/markupsafe /Library/Python/2.7/site-packages/markupsafe