Windows Python (<=3.10.2) не может запустить `python -m venv .venv`Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Windows Python (<=3.10.2) не может запустить `python -m venv .venv`

Сообщение Anonymous »

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

Код: Выделить всё

Error: Command '['C:\\Users\\kesh\\test\\.venv\\Scripts\\python.exe', '-Im', 'ensurepip', '--upgrade', '--default-pip']' returned non-zero exit status 101.
  • Эта проблема известна в хронологическом порядке: v3.7.2, v3.8, v3.? и v3.10.1
  • Единственное известное решение — отказаться от индивидуальной установки и использовать глобальную установку, отметив опцию «Установить для всех пользователей».
Я пытаюсь понять, что именно происходит, но идеи быстро заканчиваются. Вот что я пробовал на данный момент:
  • На моем компьютере функция «Установить для всех пользователей» работает так же, как и установка для каждого пользователя на фиктивной учетной записи. (все используют один и тот же установщик версии 3.10.2). Это указывает на проблему с моей учетной записью Windows. Изменение места установки не помогает.
  • Перешел к исходному коду venv, запустив Python с помощью venv.main(args=('.venv',)), отладку построчно и отметил, что он копирует Lib\venv\scripts\nt\python.exe из каталога установки Python в локальную папку .venv\Scripts с помощью Shutil.copyfile()< /code>.
  • Если я запускаю исходный файл Lib\venv\scripts\nt\python.exe в командной строке, он запускается с сообщением Нет файла pyvenv.cfg< /code> (что имеет смысл, поскольку файл .cfg находится в папке .venv, которую он не видит)
  • Если я вызову скопированный .venv\Scripts\python .exe, то он возвращает ошибку. Невозможно создать процесс с помощью 'C:\Users\kesh\AppData\Local\Programs\Python\Python310\python.exe' (обратите внимание, что python.exe< /code> путь для процесса соответствует установленному exe-файлу Python)
  • Если .venv установлен успешно (в фиктивной учетной записи Windows), приведенный выше запуск запускает Python сеанс, как и следовало ожидать.
  • Код: Выделить всё

    venv\scripts\nt\python.exe
    отличается от стандартного двоичного файла Python и проверено, что этот файл и его исходный код в venv\Scripts\nt идентичны.
  • Все это указывает к этому что-то в конфигурации моей учетной записи мешает .venv\Scripts\python.exe поступать правильно, но мои переменные среды довольно чисты, а пути Python находятся в верхней части пользовательской переменной PATH.
    В настоящее время пытаюсь найти исходный код .venv\Scripts\python.exe, но пока не нашел.
  • Может ли это быть что-то в реестре?
Если у вас есть другие идеи, поделитесь ими.
Обновление №1:< /p>
  • Найден источник сообщения об ошибке PC/launcher.c Строка 814
  • Возможность: CreateProcessW( NULL, cmdline,... где cmdline — это исходный путь Python в сообщении об ошибке, без кавычек. В документации CreateProcessW указано, что имя исполняемого файла выводится из первого токена, разделенного пробелами, в cmdline строка. Хотя я заменил фактическое имя своей учетной записи на kesh, на самом деле оно состоит из двух слов и пробела...
Обновление №2:
Решение найдено, как указано ниже

Подробнее здесь: https://stackoverflow.com/questions/710 ... -venv-venv
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»