2017-10-30 9 views
0

私はWebSocketとdjangoチャンネルでチャットアプリを作成しています。 正常にインストールされた 'pip install channels'を実行します。その後、私は 'asgi_redis'をインストールします。それもインストールされます。 channels.asgiをインポートしようとするとエラーになります。また、私のmanage.pyシェルが突然動作しなくなりました。他のdjangoプロジェクトでは正常に動作します。私は、シェルアクセスしようModuleNotFoundError:チャンネルをインストールした直後に 'win32api'というモジュールがありません

エラー:チャンネルをインストールする前に、

C:\Users\gdhameeja\Desktop\chatapp\chat>manage.py shell 
Traceback (most recent call last): 
    File "C:\Users\gdhameeja\Desktop\chatapp\chat\manage.py", line 22, in <module> 
    execute_from_command_line(sys.argv) 
    File "C:\Users\gdhameeja\AppData\Local\Programs\Python\Python36\lib\site-packages\django-1.11.6-py3.6.egg\django\core\management\__init__.py", line 364, in execute_from_command_line 
    utility.execute() 
    File "C:\Users\gdhameeja\AppData\Local\Programs\Python\Python36\lib\site-packages\django-1.11.6-py3.6.egg\django\core\management\__init__.py", line 338, in execute 
    django.setup() 
    File "C:\Users\gdhameeja\AppData\Local\Programs\Python\Python36\lib\site-packages\django-1.11.6-py3.6.egg\django\__init__.py", line 27, in setup 
    apps.populate(settings.INSTALLED_APPS) 
    File "C:\Users\gdhameeja\AppData\Local\Programs\Python\Python36\lib\site-packages\django-1.11.6-py3.6.egg\django\apps\registry.py", line 116, in populate 
    app_config.ready() 
    File "C:\Users\gdhameeja\AppData\Local\Programs\Python\Python36\lib\site-packages\channels\apps.py", line 17, in ready 
    monkeypatch_django() 
    File "C:\Users\gdhameeja\AppData\Local\Programs\Python\Python36\lib\site-packages\channels\hacks.py", line 10, in monkeypatch_django 
    from .management.commands.runserver import Command as RunserverCommand 
    File "C:\Users\gdhameeja\AppData\Local\Programs\Python\Python36\lib\site-packages\channels\management\commands\runserver.py", line 5, in <module> 
    from daphne.server import Server, build_endpoint_description_strings 
    File "C:\Users\gdhameeja\AppData\Local\Programs\Python\Python36\lib\site-packages\daphne\server.py", line 9, in <module> 
    from twisted.internet.endpoints import serverFromString 
    File "C:\Users\gdhameeja\AppData\Local\Programs\Python\Python36\lib\site-packages\twisted\internet\endpoints.py", line 41, in <module> 
    from twisted.internet.stdio import StandardIO, PipeAddress 
    File "C:\Users\gdhameeja\AppData\Local\Programs\Python\Python36\lib\site-packages\twisted\internet\stdio.py", line 30, in <module> 
    from twisted.internet import _win32stdio 
    File "C:\Users\gdhameeja\AppData\Local\Programs\Python\Python36\lib\site-packages\twisted\internet\_win32stdio.py", line 9, in <module> 
    import win32api 
ModuleNotFoundError: No module named 'win32api' 

すべてが正常に動作しているようです。 settings.py:

INSTALLED_APPS = [ 
    'django.contrib.admin', 
    'django.contrib.auth', 
    'django.contrib.contenttypes', 
    'django.contrib.sessions', 
    'django.contrib.messages', 
    'django.contrib.staticfiles', 
    'chat', 
    'channels',] 
CHANNEL_LAYERS = { 
    'default': { 
     'BACKEND' : 'asgi_redis.RedisChannelLayer', 
     'CONFIG':{ 
      'hosts': [os.environ.get('REDIS_URL', 'redis://localhost:6379')], 
     }, 
     'ROUTING' : 'chat.routing.channel_routing', 
    }, 
} 

ピップフリーズ:

C:\Users\gdhameeja\Desktop\chatapp\chat>pip freeze 
asgi-redis==1.4.3 
asgiref==1.1.2 
attrs==17.2.0 
autobahn==17.9.3 
Automat==0.6.0 
channels==1.1.8 
constantly==15.1.0 
daphne==1.3.0 
django==1.11.6 
hyperlink==17.3.1 
incremental==17.5.0 
msgpack-python==0.4.8 
pytz==2017.2 
redis==2.10.6 
six==1.11.0 
Twisted==17.9.0 
txaio==2.8.2 
virtualenv==15.1.0 
websocket-client==0.44.0 
zope.interface==4.4.3 
+0

おそらく答えはhttps://stackoverflow.com/questions/21343774/importerror-no-module-named-win32apiで、xxxという名前のモジュールはPythonパスにはないということです。 – misraX

+0

質問を投稿する前にそれを調べました。しかし、参考にしていただきありがとうございます。そして、私はチャネルをインストールした後、モジュールを検出しないのはどうですか?同じモジュールが完全に正常に動作します。 –

+0

virtualenvを使用していますか? – misraX

答えて

0

https://github.com/django/channels/issues/498 この記事を参照してください。そのエラーが発生したら、手動でpypiwin32パッケージをインストールしてください。

pip install pypiwin32 

ideがインポートするチャネルを認識しなくても、それを無視してrunserverを無視します。それは動作します。

関連する問題