@wawa

Почему runserver не работает через django-admin, хотя работает через manage.py?

Структура проекта:
mysite/
    - config/
        - settings/ [common.py, dev.py, prod.py]
        - urls.py
        - wsgi.py
        - __init__.py
    - manage.py

Через manage.py runserver работает, а через "python -m django runserver", "django-admin.exe runserver", "django-admin.py runserver" не работает.
Про DJANGO_SETTINGS_MODULE / --settings не забыл.
Выдает ошибку "ModuleNotFoundError: No module named 'config'"
Добавляю --pythonpath={полный путь к mysite} и уже получаю другую ошибку:
"ModuleNotFoundError: No module named 'http.cookies'"
Traceback
Traceback (most recent call last):
  File "F:\projects\mysite\.venv\lib\site-packages\django\core\management\__init__.py", line 318, in execute
    autoreload.check_errors(django.setup)()
  File "F:\projects\mysite\.venv\lib\site-packages\django\utils\autoreload.py", line 228, in wrapper
    fn(*args, **kwargs)
  File "F:\projects\mysite\.venv\lib\site-packages\django\__init__.py", line 18, in setup
    from django.urls import set_script_prefix
  File "F:\projects\mysite\.venv\lib\site-packages\django\urls\__init__.py", line 1, in <module>
    from .base import (
  File "F:\projects\mysite\.venv\lib\site-packages\django\urls\base.py", line 11, in <module>
    from .exceptions import NoReverseMatch, Resolver404
  File "F:\projects\mysite\.venv\lib\site-packages\django\urls\exceptions.py", line 3, in <module>
    from django.http import Http404
  File "F:\projects\mysite\.venv\lib\site-packages\django\http\__init__.py", line 1, in <module>
    from django.http.cookie import SimpleCookie, parse_cookie
  File "F:\projects\mysite\.venv\lib\site-packages\django\http\cookie.py", line 7, in <module>
    from django.utils.six.moves import http_cookies
  File "F:\projects\mysite\.venv\lib\site-packages\django\utils\six.py", line 92, in __get__
    result = self._resolve()
  File "F:\projects\mysite\.venv\lib\site-packages\django\utils\six.py", line 115, in _resolve
    return _import_module(self.mod)
  File "F:\projects\mysite\.venv\lib\site-packages\django\utils\six.py", line 82, in _import_module
    __import__(name)
  File "F:\projects\mysite\.venv\lib\site-packages\django\http\__init__.py", line 1, in <module>
    from django.http.cookie import SimpleCookie, parse_cookie
ImportError: cannot import name 'SimpleCookie'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "F:\projects\mysite\.venv\lib\site-packages\django\__main__.py", line 9, in <module>
    management.execute_from_command_line()
  File "F:\projects\mysite\.venv\lib\site-packages\django\core\management\__init__.py", line 364, in execute_from_command_line
    utility.execute()
  File "F:\projects\mysite\.venv\lib\site-packages\django\core\management\__init__.py", line 331, in execute
    _parser = self.fetch_command('runserver').create_parser('django', 'runserver')
  File "F:\projects\mysite\.venv\lib\site-packages\django\core\management\__init__.py", line 206, in fetch_command
    klass = load_command_class(app_name, subcommand)
  File "F:\projects\mysite\.venv\lib\site-packages\django\core\management\__init__.py", line 40, in load_command_class
    module = import_module('%s.management.commands.%s' % (app_name, name))
  File "C:\Python36\lib\importlib\__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 994, in _gcd_import
  File "<frozen importlib._bootstrap>", line 971, in _find_and_load
  File "<frozen importlib._bootstrap>", line 955, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 665, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 678, in exec_module
  File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
  File "F:\projects\mysite\.venv\lib\site-packages\django\core\management\commands\runserver.py", line 12, in <module>
    from django.core.servers.basehttp import (
  File "F:\projects\mysite\.venv\lib\site-packages\django\core\servers\basehttp.py", line 15, in <module>
    from wsgiref import simple_server
  File "C:\Python36\lib\wsgiref\simple_server.py", line 13, in <module>
    from http.server import BaseHTTPRequestHandler, HTTPServer
  File "F:\projects\mysite\.venv\lib\site-packages\django\http\__init__.py", line 1, in <module>
    from django.http.cookie import SimpleCookie, parse_cookie
  File "F:\projects\mysite\.venv\lib\site-packages\django\http\__init__.py", line 1, in <module>
    from django.http.cookie import SimpleCookie, parse_cookie
  File "F:\projects\mysite\.venv\lib\site-packages\django\http\cookie.py", line 7, in <module>
    from django.utils.six.moves import http_cookies
  File "F:\projects\mysite\.venv\lib\site-packages\django\utils\six.py", line 92, in __get__
    result = self._resolve()
  File "F:\projects\mysite\.venv\lib\site-packages\django\utils\six.py", line 115, in _resolve
    return _import_module(self.mod)
  File "F:\projects\mysite\.venv\lib\site-packages\django\utils\six.py", line 82, in _import_module
    __import__(name)
ModuleNotFoundError: No module named 'http.cookies'



Win7 32bit / Python 3.6.3 / Django 1.11.11
P.S: да, я видел этот вопрос Почему не запускается сервер через django-admin?
и решение с --pythonpath по всей видимости помогло, но, как видите, возникла другая ошибка.
  • Вопрос задан
  • 111 просмотров
Решения вопроса 1
@wawa Автор вопроса
В общем так.
При помощи django-admin.exe и python -m django завести runserver не удалось.
По-моему это windows специфик проблема, но все-таки я запустил проект без manage.py.
Если посмотреть на доки версий >=1.8, то там используется django-admin (т.е. бинарник). Однако в более старых версиях использовался обычный django-admin.py, который сохранился и в версии 1.11. Вот через него всё работает:
path\to\venv\Scripts\activate.bat
python path\to\venv\Scripts\django-admin.py runserver --pythonpath=path\to\project_dir --settings=config.settings.dev
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через TM ID
Похожие вопросы