6

OSX 10.7.3、PyCharm バージョン 2.5 ビルド PY 117.200

エラーを取得する方法を実行します。

  1. 新しいプロジェクトを開始します
  2. 新しい VirtualEnv を作成し、ベース インタープリターとして Python 2.7 を選択します (継承するグローバル パッケージのチェックを外したままにします)。
  3. [インストール] をクリックし、Django v1.4 を選択します。
  4. Djangoプロジェクトの種類を選択
  5. ティックEnable Admin
  6. 開いてsettings.py追加sqlite3DATABASES:ENGINE
  7. 走るsync.db
  8. データベースのスーパーユーザーを作成するポイントに到達する
  9. ロケール エラー

問題は、getdefaultlocale() メソッドが何も返さないこと (つまり、None) にあるようです。

return getpass.getuser().decode(locale.getdefaultlocale()[1])
    TypeError: decode() argument 1 must be string, not None

ただし、virtualenv を有効にして、次のコードworkon MyApplicationで実行するpythonと:

Python 2.7.2 (default, Feb  7 2012, 23:16:02) 
[GCC 4.2.1 Compatible Apple Clang 3.0 (tags/Apple/clang-211.10.1)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import locale
>>> print locale.getdefaultlocale()
('en_GB', 'UTF-8')

それで、誰かが何が起こっているのか知っていますか?

完全な出力:

bash -cl "/Users/ash/.virtualenvs/Tester/bin/python /Applications/PyCharm.app/helpers/pycharm/django_manage.py syncdb"
Creating tables ...
Creating table auth_permission
Creating table auth_group_permissions
Creating table auth_group
Creating table auth_user_user_permissions
Creating table auth_user_groups
Creating table auth_user
Creating table django_content_type
Creating table django_session
Creating table django_site
Creating table django_admin_log

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 "/Applications/PyCharm.app/helpers/pycharm/django_manage.py", line 17, in <module>
    run_module(manage_file, None, '__main__')
  File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/runpy.py", line 180, in run_module
    fname, loader, pkg_name)
  File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/runpy.py", line 72, in _run_code
    exec code in run_globals
  File "/Users/ash/Development/PycharmProjects/Tester/manage.py", line 10, in <module>
    execute_from_command_line(sys.argv)
  File "/Users/ash/.virtualenvs/Tester/lib/python2.7/site-packages/django/core/management/__init__.py", line 443, in execute_from_command_line
    utility.execute()
  File "/Users/ash/.virtualenvs/Tester/lib/python2.7/site-packages/django/core/management/__init__.py", line 382, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/Users/ash/.virtualenvs/Tester/lib/python2.7/site-packages/django/core/management/base.py", line 196, in run_from_argv
    self.execute(*args, **options.__dict__)
  File "/Users/ash/.virtualenvs/Tester/lib/python2.7/site-packages/django/core/management/base.py", line 232, in execute
    output = self.handle(*args, **options)
  File "/Users/ash/.virtualenvs/Tester/lib/python2.7/site-packages/django/core/management/base.py", line 371, in handle
    return self.handle_noargs(**options)
  File "/Users/ash/.virtualenvs/Tester/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 "/Users/ash/.virtualenvs/Tester/lib/python2.7/site-packages/django/core/management/sql.py", line 189, in emit_post_sync_signal
    interactive=interactive, db=db)
  File "/Users/ash/.virtualenvs/Tester/lib/python2.7/site-packages/django/dispatch/dispatcher.py", line 172, in send
    response = receiver(signal=self, sender=sender, **named)
  File "/Users/ash/.virtualenvs/Tester/lib/python2.7/site-packages/django/contrib/auth/management/__init__.py", line 73, in create_superuser
    call_command("createsuperuser", interactive=True, database=db)
  File "/Users/ash/.virtualenvs/Tester/lib/python2.7/site-packages/django/core/management/__init__.py", line 150, in call_command
    return klass.execute(*args, **defaults)
  File "/Users/ash/.virtualenvs/Tester/lib/python2.7/site-packages/django/core/management/base.py", line 232, in execute
    output = self.handle(*args, **options)
  File "/Users/ash/.virtualenvs/Tester/lib/python2.7/site-packages/django/contrib/auth/management/commands/createsuperuser.py", line 70, in handle
    default_username = get_default_username()
  File "/Users/ash/.virtualenvs/Tester/lib/python2.7/site-packages/django/contrib/auth/management/__init__.py", line 105, in get_default_username
    default_username = get_system_username()
  File "/Users/ash/.virtualenvs/Tester/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

Process finished with exit code 1
4

2 に答える 2

13

基本的に、これが発生する理由は、PyCharm がデフォルトで環境変数にアクセスできないためです。

この問題に対する 3 つの解決策を見つけました。

  1. この質問へのコメントで CrazyCoder が提案するリンクを使用して、グローバル環境変数を設定します。

  2. PyCharmアプリケーションディレクトリに変更して実行することにより、ターミナルウィンドウからPyCharmを実行します./pycharm(これを不便にしないために、PATHにシンボリックリンクを作成する可能性があります)

  3. PyCharm の設定を開き、 を参照してConsole > Django Console、必要な環境変数を入力します。LC_ALL=en_US.UTF-8

変数がデフォルトでロードされないのは面倒ですが、3 番目の方法が最も洗練されていると思います。

于 2012-04-26T21:00:26.293 に答える
7

ターミナルに移動します。

$ nano .bash_profile

追加:

export LC_ALL=en_GB.UTF-8
export LANG=en_GB.UTF-8

(または locale -a コマンドを使用して、利用可能なものを確認します)

保存して再試行してください。

于 2012-04-26T20:53:30.287 に答える