2014-10-31 58 views
6

我一直使用这个脚本编译django.po并且它一直在努力:的I18n停止工作

#!/bin/sh 
django-admin.py makemessages -a 
django-admin.py compilemessages 

它突然停止了工作,与此错误:

$ i18n.sh 
Traceback (most recent call last): 
    File "c:/Python34/Scripts/django-admin.py", line 5, in <module> 
    management.execute_from_command_line() 
    File "c:\Python34\lib\site-packages\django\core\management\__init__.py", line 
385, in execute_from_command_line 
    utility.execute() 
    File "c:\Python34\lib\site-packages\django\core\management\__init__.py", line 
377, in execute 
    self.fetch_command(subcommand).run_from_argv(self.argv) 
    File "c:\Python34\lib\site-packages\django\core\management\base.py", line 288, 
in run_from_argv 
    self.execute(*args, **options.__dict__) 
    File "c:\Python34\lib\site-packages\django\core\management\base.py", line 338, 
in execute 
    output = self.handle(*args, **options) 
    File "c:\Python34\lib\site-packages\django\core\management\base.py", line 533, 
in handle 
    return self.handle_noargs(**options) 
    File "c:\Python34\lib\site-packages\django\core\management\commands\makemessag 
es.py", line 283, in handle_noargs 
    potfiles = self.build_potfiles() 
    File "c:\Python34\lib\site-packages\django\core\management\commands\makemessag 
es.py", line 299, in build_potfiles 
    file_list = self.find_files(".") 
    File "c:\Python34\lib\site-packages\django\core\management\commands\makemessag 
es.py", line 358, in find_files 
    ignored_roots = [os.path.normpath(p) for p in (settings.MEDIA_ROOT, settings 
.STATIC_ROOT)] 
    File "c:\Python34\lib\site-packages\django\core\management\commands\makemessag 
es.py", line 358, in <listcomp> 
    ignored_roots = [os.path.normpath(p) for p in (settings.MEDIA_ROOT, settings 
.STATIC_ROOT)] 
    File "c:\Python34\lib\ntpath.py", line 491, in normpath 
    if path.startswith(special_prefixes): 
AttributeError: 'NoneType' object has no attribute 'startswith' 
processing file django.po in c:\Users\Debora\workspace\opti\opti2.0\project\loca 
le\pt_BR\LC_MESSAGES 

任何人有任何想法?

我不知道是什么引起的。最近我更新了django 1.7到1.7.1,安装了一些不相关的软件包,这就是我记得可能会受到影响的一些软件包。

+3

我不得不AFER升级到Django的1.7同样的问题,并解决它在运行中移除那些使用'manage.py' – cor 2014-10-31 13:35:33

+0

的命令不适用于我,同样的问题。 – giancarloap 2014-10-31 14:57:17

+0

为我做了,谢谢! – blissini 2014-12-01 20:51:54

回答

2

只需在settings.py文件中设置STATIC_ROOT即可。

这是一个bug in Django 1.7.1,并应在Django 1.7.2

(由于Django 1.6.2 STATIC_ROOT默认为None''前。)

+0

这似乎是一个bug,现在它又重新工作了,我没有改变任何东西,谢谢yofee。 – giancarloap 2015-02-27 17:40:30

0

我有同样的问题。我试图用django-admin运行,并得到了这个问题。

当我用manage.py运行它时,它运行正常。

python manage_local.py makemessages -l cs --settings=gprojects.settings_local 

使用manage.py,manage_local.py是我的替代版本。

+1

还没有为我工作,同样的问题。 (我会继续尝试) – giancarloap 2014-10-31 20:24:53

2

问题是当你没有设置你的STATIC_ROOTMEDIA_ROOT设置值。 设置在此之后,如:

MEDIA_ROOT = os.path.join(BASE_DIR, 'media') 
STATIC_ROOT = os.path.join(BASE_DIR, 'static') 

我使用make_messages.sh脚本:

#!/usr/bin/env bash 

for dir in `find -maxdepth 1 -type d ! -iname ".*"`; do 
    echo $dir 
    tmp=$(basename $dir) 
    dir="$tmp" 
    skip_this=0 
    for tmp in static media; do 
     if [ "$dir" = "$tmp" ]; then 
      skip_this=1 
      break 
     fi 
    done 

    if [ "$skip_this" = "1" ]; then 
     echo Skipping $dir 
     continue 
    fi 

    cd `dirname $0`/$dir 
    if [ ! -d locale ] ; then 
     echo Creating 'locale' directory 
     mkdir locale 
    fi 
    ../manage.py makemessages -l pl -l en -l de 
     cd .. 
done 

和执行make_messages.sh后:

./static_page 
processing locale pl 
processing locale en 
processing locale de 
./common 
Creating locale directory 
processing locale pl 
processing locale en 
processing locale de 

这是我compile_messages.sh脚本:

#!/usr/bin/env bash 

for dir in `find -maxdepth 1 -type d ! -iname ".*"`; do 
     echo $dir 
     tmp=$(basename $dir) 
     dir="$tmp" 
     skip_this=0 
     for tmp in static static_custom media; do 
       if [ "$dir" = "$tmp" ]; then 
         skip_this=1 
         break 
       fi 
     done 

     if [ "$skip_this" = "1" ]; then 
       echo Skipping $dir 
       continue 
     fi 

     cd `dirname $0`/$dir 
     ../manage.py compilemessages -l pl -l en -l de 
     cd .. 
done 
+0

这解决了我的问题,但想知道为什么这个问题发生在1.7.1而不是在1.7 – frlan 2014-11-05 19:08:21

2

我有使用Django 1.7.1相同的问题。

我修改了命令:django-admin.pypython manage.py

所以我的整个命令是这样的:

python manage.py makemessages --locale=en --ignore=templates/admin --ignore=project/settings.py

+0

我也一直在这样做,你的解决方案适用于我,但只有当我使用'sudo',然后我必须更改权限,这真的很奇怪,但是你帮我找到了一些方法来完成它,所以谢谢 – Zamphatta 2014-11-22 18:08:25

+0

很好听,我从来不用sudo来运行python命令,但是也许你已经用sudo创建了你的项目或者env,但是我真的不知道为什么。谢谢 – 2014-11-24 13:52:52

3

先定义你的本地路径makemessages

LOCALE_PATHS = (
os.path.join(BASE_DIR, 'locale/'), 
) 

在终端

$蟒蛇manage.py makemessages -l PL

去文件夹和o笔文件编辑。PO文件

然后在终端

$蟒蛇manage.py compilemessages

正常工作在Django 1.7并升级了。

我认为它可以帮助你。