今天早些时候,我在我的 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
你好,
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-venv
和python3-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
最有用的评论
原始海报的问题是由于没有安装“python3.6-venv”包,如果您无法访问 buster Debian,可以使用 Docker 进行验证:
安装'python3.6-venv',它应该可以工作。