2012-05-25 1 views
0

Что может быть здесь? Это проблема с двумя отдельными моими Mac - одна установка Eclipse и одна студия Aptana. После того, как я отвечаю «да», чтобы создать суперпользователя при первом запуске DB, я получаю эти ошибки.Django Sync DB в PyDev (Eclipse и Aptana) терпит неудачу после ответа «да», чтобы определить суперпользователей

Выполнение синхронизации db вне PyDev (через терминал и т. Д.), Кажется, работает нормально.

You just installed Django's auth system, which means you don't have any superusers defined. Would you like to create one now? (yes/no): yes Traceback (most recent call last): File "/Users/mac2/Documents/workspace/helloworld/manage.py", line 10, in execute_from_command_line(sys.argv) File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/core/management/init.py", line 443, in execute_from_command_line utility.execute() File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/core/management/init.py", line 382, in execute self.fetch_command(subcommand).run_from_argv(self.argv) File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/core/management/base.py", line 196, in run_from_argv self.execute(*args, **options.dict) File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/core/management/base.py", line 232, in execute output = self.handle(*args, **options) File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/core/management/base.py", line 371, in handle return self.handle_noargs(**options) File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/core/management/commands/syncdb.py", line 110, in handle_noargs emit_post_sync_signal(created_models, verbosity, interactive, db) File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/core/management/sql.py", line 189, in emit_post_sync_signal interactive=interactive, db=db) File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/dispatch/dispatcher.py", line 172, in send response = receiver(signal=self, sender=sender, **named) File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/contrib/auth/management/init.py", line 73, in create_superuser call_command("createsuperuser", interactive=True, database=db) File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/core/management/init.py", line 150, in call_command return klass.execute(*args, **defaults) File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/core/management/base.py", line 232, in execute output = self.handle(*args, **options) File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/contrib/auth/management/commands/createsuperuser.py", line 70, in handle default_username = get_default_username() File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/contrib/auth/management/init.py", line 105, in get_default_username default_username = get_system_username() File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/contrib/auth/management/init.py", line 85, in get_system_username return getpass.getuser().decode(locale.getdefaultlocale()[1]) TypeError: decode() argument 1 must be string, not None Finished "/Users/mac2/Documents/workspace/helloworld/manage.py syncdb" execution.

ответ

1

Обнаружена ошибка указывает на то, что вызов decode терпит неудачу с None аргумент:

"/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/contrib/auth/management/init.py", line 85, in get_system_username return getpass.getuser().decode(locale.getdefaultlocale()[1]) TypeError: decode() argument 1 must be string, not None Finished 

Проблема есть в том, что locale.getdefaultlocale() возвращает кортеж с переменной окружения LANG (см http://docs.python.org/library/locale.html). Если вы откроете терминал, где работает syncdb, и введите echo $LANG, я думаю, вы получите что-то вроде en_US.UTF-8. Точно так же, я думаю, Python на командной строке возвращает что-то вроде этого:

>>> import locale 
>>> locale.getdefaultlocale() 
('en_US', 'UTF-8') 

Однако, если вы используете тот же команда из в Eclipse, где переменная окружения LANG не установлен, вы получите (None, None).

Попробуйте установить переменную окружения LANG в Eclipse (Run Configurations ...> Environment), а затем запустите syncdb. Возможно, вам придется немного поиграть там, где установлена ​​переменная (т. Е. В настройке «Выполнить» и «Сам проект»). Это устраняет проблему?

+0

Это решило. Спасибо! –

+2

Вы также можете установить переменную окружения в 'settings.py' вашего проекта Django следующим образом:' import os; os.environ ['LANG'] = 'en_US.UTF-8''. – pemistahl