"manage.py runserver" теперь не запускается с "py", а только с "python".

Начинаю веб-разработку, использую VSCode, Python 3.12.3 в виртуальной среде и Django 5.0.6.

Когда работает:

py manage.py runserver

Я получаю:

Unable to create process using 'c:\Users\MyUserName\Documents\GitHub\Coding Practice\Python\DjangoLearningMongo\.venv\Scripts\python.exe manage.py runserver'

В другом сообщении предлагалось использовать только manage.py runserver, но это дает:

Unable to create process using 'c:\Users\MyUserName\Documents\GitHub\Coding Practice\Python\DjangoLearningMongo\.venv\Scripts\python.exe "C:\Users\MyUserName\Documents\GitHub\Coding Practice\Python\DjangoLearningMongo\grocery_prices_mongo\manage.py"  runserver'

Я использовал py manage.py runserver на протяжении всего проекта до сегодняшнего утра. Теперь py не работает ни с чем, выдавая вышеприведенное, и вместо него я должен использовать python.

Вот изменения, которые я внес в проект вчера:

  • добавили статические файлы в проект (папка static, settings.py для STATIC_ROOT, py manage.py collectstatic и т.д...)
  • pip установил whitenoise для обработки статического CSS в продакшене
  • установил DEBUG на FALSE
  • Добавил 127.0.0.1 к ALLOWED_HOSTS

Я по-прежнему мог использовать py manage.py runserver (или другие команды py manage.py) на каждом шагу, когда вносил эти изменения, и только сегодня утром, когда я вернулся к проекту, py перестал работать, и вместо него пришлось использовать python, чего мне не приходилось делать ни разу до этого в проекте.

Я даже зашел в другой проект, который не запускал и не редактировал уже неделю или около того, и он выдает ту же ошибку при использовании py, хотя его venv находится на другой версии Python, чем проект, в котором я впервые столкнулся с этой ошибкой.

Когда я создал совершенно новый проект Django, он работал, используя py, как в виртуальной среде, так и вне ее.

Я пробовал:

  • деактивация и повторная активация виртуальной среды
  • обновление pip
  • удаление и удаление виртуальной среды
  • восстановление установки Python, которую venv использовал при создании venv
  • удаление и повторное удаление виртуальной среды после восстановления установки
  • восстановление проекта до версии, предшествующей последним изменениям

Каждый шаг приводил к одному и тому же результату для проекта - py не работал с той же ошибкой, а python работал.

В процессе работы я обнаружил, что py и python указывают на разные версии Python при использовании вне виртуальной среды (3.12.3 и 3.10.4 соответственно). Однако, несмотря на это, py выдавал одну и ту же ошибку как на проекте 3.12.3 venv, так и на проекте 3.10.4 venv, в то время как python работал на обоих.

Я проверил свои PATH переменные окружения, и они остались неизменными.

Что могло вызвать это изменение, и как я могу вернуть первоначальную функциональность для py?

Судя по формату буквы диска c:, я предполагаю, что вы работаете с ОС Windows.

Похоже, на вашей машине нарушена символическая связь между py и python.exe. Это может быть вызвано чем угодно, поэтому не будем вдаваться в подробности.

Чтобы исправить неработающую ссылку, вы можете просто воссоздать ее с помощью команды mklink [microsoft.com] на Windows OS.

mklink opt <link> <target>

В вашем случае я буду использовать:

mklink /h \path\to\py \path\to\python.exe

Заметили, что вместо мягкой ссылки используется жесткая ссылка? Таким образом, он ссылается на тот же инод, что и оригинальный файл.

Вернуться на верх