pyvenv возвращает ненулевой статус выхода 1 (во время установки этапа pip)
Если вы когда-нибудь столкнетесь со следующей ошибкой при создании виртуальной среды Python с помощью команды pyvenv:
user$ pyvenv my_venv_dir
Error: Command '['/home/user/my_venv_dir/bin/python', '-Im', 'ensurepip', '--upgrade', '--default-pip']' returned non-zero exit status 1
Ответ на вопрос (ниже) предоставляет простой способ обойти его, не проходя через setuptools и связанную с ним акробатику.
4 ответа
Вот простой способ обойти это без прохождения setuptools и связанной с этим акробатики:
user$ pyvenv --without-pip my_venv_dir
user$ source my_venv_dir/bin/activate
user$ curl https://bootstrap.pypa.io/get-pip.py | python
user$ deactivate
user$ source my_venv_dir/bin/activate
(my_venv_dir) user$
Я надеюсь, что это помогает.
2020, на python3.8 на WSL2 (Ubuntu) для меня это решило следующее:
sudo apt install python3.8-venv
Следующее должно это исправить
brew update
brew upgrade
brew install zlib
Если у вас есть модуль, файл которого назван в честь стандартной библиотеки Python, в папке, в которой вы вызываете, то эта команда завершится ошибкой без намека на это.
Например, вы называете файл
email.py
.
Что я сделал, чтобы найти это, так это написал сценарий bash, который перемещает
.py
файлы из текущего каталога один за другим (в
holdspace/
subdir) и пытайтесь при каждом движении вызывать
venv
создание каталога. Если
python -m venv venv
команда завершается с
0
код, поэтому он успешен, и виноват последний перемещенный файл.
#!/bin/bash
if [ ! -d ./holdspace ]
then
mkdir holdspace/
fi
for file in *.py
do
mv "$file" holdspace/
python -m venv venv >/dev/null 2>&1
if [ $? -eq 0 ]
then
echo "$file was the culprit."
rm -rf venv/
break
else
echo "$file isn't the culprit."
fi
rm -rf venv/
done
mv holdspace/*.py .