Pyvenv-3.4返回非零退出状态1

我在 Kubuntu 14.04,我想用 python3.4创建一个 Virtual alenv。我之前在另一个文件夹中使用 python2.7。但是当我尝试的时候:

pyvenv-3.4 venv

我有:

Error: Command '['/home/fmr/projects/ave/venv/bin/python3.4', '-Im', 'ensurepip', '--upgrade', '--default-pip']' returned non-zero exit status 1

159750 次浏览

我有一个安装 python-viralenv 的解决方案

sudo apt-get install python-virtualenv

和使用

virtualenv --python=/usr/bin/python3.4 venv

Pyvenv 是与新版本的 python3捆绑在一起的,它被认为会取代 viralenv,所以它们并不完全是一回事。

Ubuntu 14.04的第一个版本中的 python 3.4出现了一些问题,导致了这个错误。

升级发行版为我解决了这个问题。我想它可能也适用于 Kubuntu。

sudo do-release-upgrade -d # this takes a while, and involves a reboot as well.
sudo apt-get install python3.4-venv
pyvenv-3.4 venv

在运行 这些文件是用来做-释放-升级的之前,请先阅读它。使用-d 标志将升级到最新的开发版本,其中可能包括一些不稳定的软件。

你不能撤销做-释放-升级

Linux Mint 17(基本上是 Ubuntu 14.04)也有同样的问题。安装 python3.4-venv不起作用,所以我创建了没有 pip 的 viralenv,然后手动安装 pip。

  1. 创建 viralenv 并激活它

    python3 -m venv --without-pip foo
    source foo/bin/activate
    
  2. Download latest versions of setuptools and pip:

    wget https://pypi.python.org/packages/source/s/setuptools/setuptools-7.0.tar.gz#md5=6245d6752e2ef803c365f560f7f2f940
    wget https://pypi.python.org/packages/source/p/pip/pip-1.5.6.tar.gz#md5=01026f87978932060cc86c1dc527903e
    
  3. Unpack and install them

    tar xf setuptools-7.0.tar.gz
    tar xf pip-1.5.6.tar.gz
    cd setuptools-7.0
    python setup.py install
    cd ../pip-1.5.6
    python setup.py install
    

在 Ubuntu 13.10上,下面的内容对我很有用:

pyvenv-3.4 delme --without-pip
source delme/bin/activate
python -Im ensurepip --upgrade --default-pip

我遇到了这个问题。

为了研究,我执行了与 pyvenv 相同的命令,然后得到了“ locale. Error: unsupport locale set”。

最后,通过配置“ LC _ ALL = en _ US. UTF-8”修复了这个问题。

这里有一个 O/S 不可知的解决方案 :

pyvenvpython命令本身都包含一个 --without-pip选项,使您能够解决这个问题; 而不必求助于 setuptool或其他令人头疼的选项。注意下面我的 inline comments,这里是如何做到这一点,并且非常容易理解:

user$ pyvenv --without-pip ./pyvenv.d          # Create virtual environment this way;
user$ python -m venv --without-pip ./pyvenv.d  # --OR-- this newer way. Both work.


user$ source ./pyvenv.d/bin/activate  # Now activate this new virtual environment.
(pyvenv.d) user$


# Within it, invoke this well-known script to manually install pip(1) into /pyvenv.d:
(pyvenv.d) user$ curl https://bootstrap.pypa.io/get-pip.py | python


(pyvenv.d) user$ deactivate           # Next, reactivate this virtual environment,
user$ source ./pyvenv.d/bin/activate  # which will now include the pip(1) command.
(pyvenv.d) user$


(pyvenv.d) user$ which pip            # Verify that pip(1) is indeed present.
/path/to/pyvenv.d/bin/pip


(pyvenv.d) user$ pip install --upgrade pip # And finally, upgrade pip(1) itself;
(pyvenv.d) user$                           # although it will likely be the
# latest version. And that's it!

我希望这有所帮助

与@prismalytics 非常相似。但是对于那些不喜欢从 web 运行 shell 脚本的人来说。当然,您可以使用—— no-index —— find-links 来指向本地副本。任何最近的 pip 轮文件就足够了,它只指向 PyPI 上的当前版本。

python3 -m venv --without-pip your_venv
source your_venv/bin/activate
curl 'https://pypi.python.org/packages/b6/ac/7015eb97dc749283ffdec1c3a88ddb8ae03b8fad0f0e611408f196358da3/pip-9.0.1-py2.py3-none-any.whl' > pip.whl
python -m zipfile -e pip.whl $VIRTUAL_ENV/lib/python3*/site-packages
python -m pip install --force-reinstall --upgrade pip

你错过了 python 3.4的 venv lib,只需要运行:

$ apt-get install python3.4-dev python3.4-venv

然后创建你的 Virtual alenv

python3.4 -m venv myVenv

这在 python 3.6和 OSX 中对我很有用

$ python -m venv --without-pip my_dir
$ source my_dir/bin/activate
$ curl https://bootstrap.pypa.io/get-pip.py | python
$ deactivate
$ source my_dir/bin/activate
(my_dir) user$

LMDE2上播放:

  • Python 3.4.2
  • Debian _ version: 8.11 Debian _ version: 8.11

这是我第一次在这台机器上使用 python,我遇到了这个问题:

freezed@machine ~/git/repo % python3 -m venv .venv
Error: Command '['/home/freezed/git/repo/.venv/bin/python3', '-Im', 'ensurepip', '--upgrade', '--default-pip']' returned non-zero exit status 1
zsh: exit 1     python3 -m venv .venv

我用以下方法解决了这个问题:

sudo apt-get install python3.4-venv

我也面临着同样的问题。

[niraj@abc ~]$/python/v3.7.0/bin/python3 -m venv avd
Error: Command '['/home/niraj/avd/bin/python3', '-Im', 'ensurepip', '--upgrade', '--default-pip']' returned non-zero exit status 1.

在我的 LD _ LIBRARY _ PATH 上添加 libffi3.3之后,它就可以工作了

Setenv LD _ LIBRARY _ PATH/libffi/v3.3/lib64

我在 Ubuntu 16.04中安装 psutil 有以下问题:

Psutil (setup.py) ... 错误的构建轮

以下是我的成功步骤:

检查你的 Python 版本(我的 Python 版本是3.7)

然后执行下面的附加步骤:

sudo apt-get install python3.7-dev

那么

pip install psutil


source ./my_venv_dir/bin/activate


pip install --upgrade pip

对于来到这篇文章的 Windows 用户,请遵循以下步骤:-

您可以通过运行以下命令来确保 pip 是最新的: python -m pip install --upgrade pip

运行: python -m pip install --user virtualenv

最后使用 python -m virtualenv <your env name>

这是我对这个错误的解决方案:

$ python3.6 -m venv venv

失败的命令: [’/venv/bin/python3.6’,’-Im’,‘ ensurepip’,’—— update’,’—— default-pip’]

解决方案:

$ rm -rf venv
$ apt install python3.6-venv
$ python3.6 -m venv venv

只需运行命令:

$ apt-get install python3-venv

然后运行以下命令创建虚拟环境:

$ python3.6 -m venv

这是一个疯狂的边界条件,但是如果在使用 python3.9创建虚拟环境时,在工作目录中有一个名为 csv.py的文件,那么 ensurepip 将会失败。

删除或重命名文件,应该会成功

    $ touch csv.py
$ python3.9 -m venv venv
Error: Command '['/test/venv/bin/python3.9', '-Im', 'ensurepip', '--upgrade', '--default-pip']' returned non-zero exit status 1.
$ rm -rf venv/
$ rm csv.py
$ python3.9 -m venv venv
$ ls venv/
bin/        include/    lib/        pyvenv.cfg


我遇到了一个非常类似的错误,由一个非常不同的问题引起的。我们使用 SLURM 作为计算机集群上的工作负载管理器。因此,我们“有益地”设置 TMPDIR,以确保用户不会填满计算节点上的本地文件系统。

在我的例子中,这可以归结为 venv:__init__.py:_setup_pip()产生一个单独的子进程的问题。最初给出的错误具有欺骗性,因为在调用子进程时会丢失真正的错误。

在遇到错误并保持失败的虚拟环境的状态不变之后,您可以聪明地在调试器中运行失败的命令(即子进程)。对我来说是的

python -m pdb -m ensurepip --upgrade --default-pip

从那里,您可以逐步通过调试器,并找出真正的问题是什么。在我的例子中,它归结为在 pip/_internal/utils/temp_dir.py中(从安装尝试期间下载的滚轮文件)试图创建一个相邻的目录,并且它与我们的 TMPDIR设置不完全一致。解决方案是设置 export TMPDIR=/tmp,它工作得很好。

显然,可能存在与@kahonmlg 发布的错误非常相似的整个问题子集。正确调试衍生进程是解决这些问题的关键。在我的情况下,解决方案只是设置 TMPDIR,但显然你的英里数可能会有所不同。

以上的解决方案都不管用。它归结为我的目录中名为 calendar.py的一个 python 文件。我的猜测是,当 venv 进程认为我的 calendar.py文件是 Python 的官方日历模块时,可能会发生一些冲突。

不管怎样,在重命名文件之后,问题就解决了。

Windows + Studio 代码

我在 Windows (WSL)上直接从 VS Code 运行 Ubuntu 时遇到了同样的问题(例如,安装在 WSL 上的 Ubuntu 和远程开发者扩展,可以直接从 VS Code 执行 Ubuntu 终端)。

这里许多人提供的使用—— without-pip 的解决方案也触发了一个错误。

它链接到 PATH 没有引用 pip 安装文件夹的事实。我必须在我的 WSL 环境中手动设置它: export PATH=$PATH:/path/to/my/program Pip 的 PATH 应该类似于: /home/[linuxuser]/.local/bin,其中[ linuxuser ]是您的帐户名

您可以使用以下命令检查 Linux 中的 PATH: echo $PATH