3

を使用してセロリを実行しようとすると、django 1.2.7 から 1.5.1 にアップグレードした後

python manage.py celeryd -v 2 -l INFO --settings=settings

と言うエラーが出ました

django.core.management.execute_manager

django 1.4 で非推奨になりました

私のmanage.py

#!/usr/bin/env python
from django.core.management import execute_manager
try:
    import settings # Assumed to be in the same directory.
except ImportError:
    import sys
    sys.stderr.write("Error: Can't find the file 'settings.py' in the directory containing %r. It appears you've customized things.\nYou'll have to run django-admin.py, passing it your settings module.\n(If the file settings.py does indeed exist, it's causing an ImportError somehow.)\n" % __file__)
    sys.exit(1)

if __name__ == "__main__":
    execute_from_command_line(settings)

私はdjango 1.4のリリースノートを見ました

django-core-management-execute-manager

そこにあるように、execute_managerをexecute_from_command_lineに置き換えました

サーバーを再起動すると、このエラーメッセージが表示されるようになりました

Traceback (most recent call last):
  File "C:\my\manage.py", line 12, in <module>
    execute_from_command_line(settings)
  File "C:\Python27\lib\site-packages\django\core\management\__init__.py", line 452, in     execute_from_command_line
    utility = ManagementUtility(argv)
  File "C:\Python27\lib\site-packages\django\core\management\__init__.py", line 226, in __init__
    self.prog_name = os.path.basename(self.argv[0])
TypeError: 'module' object is not subscriptable
4

1 に答える 1

3

メソッドに間違った引数を渡していますexecute_from_command_line。以下のようにする必要があります。

#!/usr/bin/env python
import os
import sys

if __name__ == "__main__":
    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "<package>.<subpackage>.settings") #path to the settings py file
    from django.core.management import execute_from_command_line
    execute_from_command_line(sys.argv)

また

#!/usr/bin/env python
import os

if __name__ == "__main__":
    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "<package>.<subpackage>.settings") #path to the settings py file
    from django.core.management import execute_from_command_line
    execute_from_command_line() # by default sys.argv argument is taken

実際、 の引数execute_from_command_lineは、その名前が示すように、最初の要素が実行可能ファイル名で、その他が引数である解析済みコマンド ラインです。

于 2013-07-22T13:23:46.507 に答える