Virtualenv: 使用 python3.6 创建 virtualenv 时出错

创建于 2017-06-22  ·  24评论  ·  资料来源: pypa/virtualenv

今天早些时候,我在我的 debian 机器上安装了 python3.6。 Python3.6 在 buster 发行版中可用。 当我尝试使用 python3.6 创建一个 virtualenv 时。

python3.6 -m venv venv

给出以下错误。

虚拟环境未成功创建,因为 ensurepip 不可用。 在 Debian/Ubuntu 系统上,您需要使用以下命令安装python3-venv包。

apt-get 安装 python3-venv

您可能需要在该命令中使用 sudo。 安装python3-venv后
打包,重新创建您的虚拟环境。

失败命令:['/home/float/test/t/bin/python3.6', '-Im', 'ensurepip', '--upgrade', '--default-pip']

我确实安装了python3-venv (3.5.3-1) 。 为什么会出现此错误? 如果我运行命令

py3 -Im ensurepip --upgrade --default-pip

它说

/usr/bin/python3.6: No module named ensurepip

我使用默认的 python3 版本 (3.5.3) 创建 virtualenv 没有问题。

另外,我注意到我可以创建一个 virtualenv 如下:

virtualenv -p python3.6 venv

最有用的评论

原始海报的问题是由于没有安装“python3.6-venv”包,如果您无法访问 buster Debian,可以使用 Docker 进行验证:

$ docker run --rm -it debian:buster /bin/bash
$ apt update
...
$ apt install python3.5 python3.6 python3.5-venv
...
$ python3.6 -m venv venv
The virtual environment was not created successfully because ensurepip is not
available.  On Debian/Ubuntu systems, you need to install the python3-venv
package using the following command.

    apt-get install python3-venv

You may need to use sudo with that command.  After installing the python3-venv
package, recreate your virtual environment.

Failing command: ['/venv/bin/python3.6', '-Im', 'ensurepip', '--upgrade', '--default-pip']
$ rm -rf venv
$ apt install python3.6-venv
...
$ python3.6 -m venv venv
... success

安装'python3.6-venv',它应该可以工作。

所有24条评论

你好,

virtualenv 和 python3 venv 自己的模块是 2 个完全不同的项目/事物。

venv 的作用与 virtualenv 相同,但直接集成在 python3 本身中。
virtualenv 基本上是一个历史项目(通常不应该在有 venv 的情况下与 python3 一起使用)。

根据您的输入,我会说 python3-venv 可能是在您这边重新安装( sudo apt-get reinstall python-venv或类似的东西)。 但我可能是错的。 无论如何,这看起来像所有与 debian 相关的我很确定。

那么你可以关闭这个问题吗? (我不是这里的维护者)
问候。

重装也没用。 我现在将关闭这个问题。 如果我有更多信息,我会更新。

@animeshb ,之后你没有更多的输出

Failing command: ['/home/float/test/t/bin/python3.6', '-Im', 'ensurepip', '--upgrade', '--default-pip']

?

float<strong i="5">@animesh</strong>:~/test$ python3.6 -m venv venv

在那一行之后什么都没有。

The virtual environment was not created successfully because ensurepip is not available. On Debian/Ubuntu systems, you need to install the python3-venv package using the following command.

apt-get install python3-venv

You may need to use sudo with that command. After installing the python3-venv
package, recreate your virtual environment.

Failing command: ['/home/float/test/t/bin/python3.6', '-Im', 'ensurepip', '--upgrade', '--default-pip']

venv/bin文件夹中,它没有激活命令。

float<strong i="13">@animesh</strong>:~/test$ ls venv/bin/
python  python3  python3.6

我只能将您重定向到与此错误匹配的许多页面之一(这是 debian/ubuntu 系统的已知问题):

https://bugs.launchpad.net/ubuntu/+source/python3.4/+bug/1290847

sudo apt-get install python3-pip呢?

原始海报的问题是由于没有安装“python3.6-venv”包,如果您无法访问 buster Debian,可以使用 Docker 进行验证:

$ docker run --rm -it debian:buster /bin/bash
$ apt update
...
$ apt install python3.5 python3.6 python3.5-venv
...
$ python3.6 -m venv venv
The virtual environment was not created successfully because ensurepip is not
available.  On Debian/Ubuntu systems, you need to install the python3-venv
package using the following command.

    apt-get install python3-venv

You may need to use sudo with that command.  After installing the python3-venv
package, recreate your virtual environment.

Failing command: ['/venv/bin/python3.6', '-Im', 'ensurepip', '--upgrade', '--default-pip']
$ rm -rf venv
$ apt install python3.6-venv
...
$ python3.6 -m venv venv
... success

安装'python3.6-venv',它应该可以工作。

哇,我完全没有想到会有一个特定于版本的 -venv 包。 安装这个就行了。

@gst@eukaryote 非常感谢您在这个问题上花费时间。

@eukaryote的解决方案对我

错误配置的区域设置也可能导致此问题,因为答案解决了我的问题,该问题产生与 OP 相同的错误消息。

尝试执行:

export LC_ALL="en_US.UTF-8"
export LC_CTYPE="en_US.UTF-8"
sudo dpkg-reconfigure locales

只有一个数据点,但是在使用新的虚拟机 ubuntu 仿生时,我发现apt install python3.6-venv仍然给我留下了损坏的python3.6 -m venv ,但是运行apt install python3-venv修复了它。

我在 Debian testing/buster 上遇到了同样的问题,而python3.6-venvpython3-venv都已安装。

顺便说一下,debian 错误在这里: https ://bugs.debian.org/cgi-bin/bugreport.cgi?bug

尼古拉斯
他们在那里写道,它在最后一个版本中得到了修复。 所以我做了
apt清除python3.6-venv
dpkg -i --force-depends-version python3.6-venv_3.6.6~rc1-3_amd64.deb # 来自 snapshot.debian.org
它对我有用。
可能我稍后需要修复:apt --fix-broken install

只是在这里留下评论,对于那些在我之后到达的人,谷歌搜索同样的问题:

这同样适用于python 3.7,您必须安装python3.7-venv ,即apt-get install python3.7-venv

仅供参考,上述解决方案实际上不适用于 python 3.7。 apt install python3.7 python3.7-venv在股票 buster docker 镜像上仍然会产生一个损坏的 virtualenv(“ensurepip 不可用”)。 但是,在apt install python3-venv (不必要地安装所有 python3.6)之后,您可以使用python3.7 -m venv myvenv创建一个有效的 python 3.7 venv,包括适当的 3.7 pip。 所以完整的工作命令集是这样的:

sudo apt install python3.7 python3-venv python3.7-venv # all three are required
python3.7 -m venv myvenv
. myvenv/bin/activate

(顺便说一句,请注意,所有python3.7-venv安装都是一个虚拟系统ensurepip模块。)

你在谈论venv ,这是一个不同的项目。 此跟踪器用于 virtualenv。

我也面临同样的问题。

[ niraj@abc ~]$/python/v3.7.0/bin/python3 -m venv avd
错误:命令 '['/home/niraj/avd/bin/python3'、'-Im'、'ensurepip'、'--upgrade'、'--default-pip']' 返回非零退出状态 1。

在我的 LD_LIBRARY 路径上添加 libffi3.3 后,它可以工作

setenv LD_LIBRARY_PATH /libffi/v3.3/lib64

首先我用sudo apt install python3-venv并遇到了同样的问题,它是通过执行以下操作解决的: sudo apt install python3.6-venv

@eukaryote仍然没有工作。 你能帮我吗? 我在 Ubuntu 18.04 LTS

错误配置的区域设置也可能导致此问题,因为答案解决了我的问题,该问题产生与 OP 相同的错误消息。

尝试执行:

export LC_ALL="en_US.UTF-8"
export LC_CTYPE="en_US.UTF-8"
sudo dpkg-reconfigure locales

这在 Ubuntu 16.04.6 上对我有用。 谢谢

错误配置的区域设置也可能导致此问题,因为答案解决了我的问题,该问题产生与 OP 相同的错误消息。

尝试执行:

export LC_ALL="en_US.UTF-8"
export LC_CTYPE="en_US.UTF-8"
sudo dpkg-reconfigure locales

谢谢

哇,安装特定版本的 venv 对我有用。 就我而言,python3.8-venv。

谢谢@jrperin

安装特定版本也对我有用:python3.8-venv

如果操作系统版本是 18.04 或 20.04:

sudo apt remove python3.6
sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt update
sudo apt install python3.6
sudo apt install python3.6-venv
sudo apt install python3.6-dev

附加支持软件
sudo apt install build-essential zlib1g-dev libncurses5-dev libgdbm-dev libnss3-dev libssl-dev libreadline-dev libffi-dev wget

此页面是否有帮助?
0 / 5 - 0 等级