pyvenv无法正常工作,因为ensurepip不可用

Lou*_*s M 48 python virtualenv

我几天前从ubuntu 14.04升级到ubuntu 16.04.当我尝试使用创建虚拟环境时

pyvenv .venv
Run Code Online (Sandbox Code Playgroud)

要么

python3 -m venv .venv
Run Code Online (Sandbox Code Playgroud)

有一个错误:

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: ['/usr/bin/python3.5', '-Im', 'ensurepip', '--upgrade', '--default-pip']
Run Code Online (Sandbox Code Playgroud)

我试过跑两个

sudo apt-get install python3-venv
Run Code Online (Sandbox Code Playgroud)

sudo apt-get install python3.5-venv
Run Code Online (Sandbox Code Playgroud)

但它没有解决我的问题.

有人可以帮忙吗?谢谢

Lou*_*s M 86

这似乎是一个语言环境问题.通过执行解决:

export LC_ALL="en_US.UTF-8"
export LC_CTYPE="en_US.UTF-8"
sudo dpkg-reconfigure locales
Run Code Online (Sandbox Code Playgroud)

在此线程上发现Python语言环境错误:不支持的语言环境设置

  • 这很疯狂,但这是真的 (29认同)
  • 真的很好奇,但有人知道是什么原因? (6认同)
  • 我在使用Python和Pip时总是遇到这样的问题。要么某些东西不可用/安装,virtualenv 不工作,等等。然后你必须花半个小时用你可能不是专家的语言调试东西。最重要的是,您会得到一些不明确的建议,例如“您可能需要在该命令中使用 sudo”。这打开了一个全新的老鼠巢穴。 (4认同)
  • 这很疯狂,但是*这并不总能解决问题* (4认同)
  • 谢谢,在这里运行一个最小的 docker 设置。我**从未**想到过。 (2认同)

小智 44

尝试安装python3.6-venv:

sudo apt-get install python3.6-venv
Run Code Online (Sandbox Code Playgroud)

  • ...或者“sudo apt-get install python3.10-venv”,如果你使用 python 3.10(如果我们能活到 2020 年) (24认同)
  • ...或者“sudo apt-get install python3.8-venv”(如果您使用 python 3.8) (23认同)
  • ...或者“sudo apt-get install python3.9-venv”,如果您使用 python 3.9(供将来使用) (7认同)
  • ...或`sudo apt-get install python3.7-venv`(如果您使用python 3.7 (4认同)
  • 感谢您的解决方案。它在 16.04 上运行(当然前提是已经安装了 python3.6)。我不明白的是: 1. venv 应该准确地使使用 apt-get 变得不必要。它是标准库的一部分。2.为什么使用venv的pip默认版本不是最新版本? (3认同)
  • 嗯,在我的 ubuntu 18.04 中,`sudo apt-get install python3-venv` 打印:`将安装以下新软件包:python3-venv python3.6-venv`,所以它会自动工作。 (2认同)
  • ...或者 sudo apt-get install python3.11-venv 我们还活着,这是 2023 年 (2认同)

Epo*_*ous 38

在 Windows Linux 子系统和 Ubuntu 18.04 下,这是由于我最近没有升级造成的。

我跑了:

sudo apt update
sudo apt upgrade
Run Code Online (Sandbox Code Playgroud)

然后sudo apt install python3-venv工作了。

请注意,我事先也尝试过UTF-8 解决方案(我将其作为我的 一部分.bashrc),因此这可能是一个促成因素。

  • 我认为 UTF-8 解决方案并不重要。我也在 WSL Ubuntu 18.04 上,步骤 `sudo apt update` 和 `sudo apt install python3-venv` 就足够了。 (5认同)
  • 这也对我有用,我尝试了其他几种选择..它不起作用, (2认同)
  • 同样在这里。我多次尝试`sudo apt install python3-venv`但没有成功。但更新/升级后一切正常。 (2认同)

Aar*_*n F 22

其中一个答案上次修复了它,但是使用Python 3.7我必须这样做:

apt install python3-pip python3-setuptools python3.7-venv
Run Code Online (Sandbox Code Playgroud)

其次是

python3.7 -m venv /path/to/venv
Run Code Online (Sandbox Code Playgroud)


Rus*_* A. 11

找到这个答案时解决了 Ubuntu18 上的类似问题。它类似于为@Niko Rikken 工作的那个,除了它真的不需要任何新的 PPA 和“python3.8-distutils”包。我正在用 venv 安装新的 python3.8 环境,并且我已经安装了“python3-venv”并且是最新的,所以我的解决方案是只安装“python3.8-venv”:

% sudo apt-get install python3.8-venv
Run Code Online (Sandbox Code Playgroud)

这让这条线工作:

% python3.8 -m venv ~/envs/new_env
% source ~/envs/new_env/bin/activate
Run Code Online (Sandbox Code Playgroud)


小智 11

在我的情况下,接下来的步骤有效:

  • Ubuntu 18.04.4 LTS
 $ sudo apt-get install python3-venv python3.7-venv
 $ python3.7 -m venv [your_path_to_virtual_env_here]
Run Code Online (Sandbox Code Playgroud)


Nic*_*ken 9

我在最近发布的Python-3.8 的Ubuntu 18.04上遇到了这个问题。我的解决方案是添加提供所需包的Deadsnakes PPA。该软件包已在存储库中。感谢这篇博文python3.8-distutilspython3.8-venv

sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt update
sudo apt install python3.8
sudo apt install python3.8-distutils
sudo apt install python3.8-venv
Run Code Online (Sandbox Code Playgroud)

注意:这只是一个临时解决方案。在不久的将来,所需的python3.8-distutils软件包可能会在默认的 Ubuntu 存储库中可用。

编辑:

对于 Ubuntu 20.04 LTS,python3-distutils包基于 Python 3.8。到目前为止,还没有可用于 Ubuntu 18.04 LTS 的 Python 3.8 包 distutils 包。

正如该线程的其他评论中所述,distutils可能不需要。这是针对我的用例,但请在添加其他 PPA 之前考虑该解决方案。


Ude*_*esh 8

我不得不提及具体版本并将pythonpython 3.10替换为您的版本

 $ sudo apt-get update -y && sudo apt-get upgrade -y
 $ sudo apt-get install python3.10-venv
Run Code Online (Sandbox Code Playgroud)

创建虚拟环境

$ python3.10 -m venv --system-site-packages Project_Name
Run Code Online (Sandbox Code Playgroud)


小智 6

    \n
  1. 首先,创建一个目录:
  2. \n
\n
mkdir testing\n
Run Code Online (Sandbox Code Playgroud)\n
    \n
  1. 然后,移动到名为testing的目录:
  2. \n
\n
cd testing\n
Run Code Online (Sandbox Code Playgroud)\n
    \n
  1. 当您在此目录中键入以下命令时:
  2. \n
\n
python3 -m venv env\n
Run Code Online (Sandbox Code Playgroud)\n

你得到这样的错误:

\n

由于 Ensurepip 不\n可用,虚拟环境未成功创建。在 Debian/Ubuntu 系统上,您需要使用以下命令安装 python3-venv\n软件包。

\n
apt install python3.8-venv\n
Run Code Online (Sandbox Code Playgroud)\n
    \n
  1. 键入以下命令,但在此之前请注意计算机上安装的 python 版本;就我而言,它是 python3.8
  2. \n
\n
sudo apt install python3.8-venv\n
Run Code Online (Sandbox Code Playgroud)\n
    \n
  1. 现在,我们可以创建一个虚拟环境并将其工具存储在“bhandari”文件夹中。
  2. \n
\n
python3 -m venv bhandari   \n
Run Code Online (Sandbox Code Playgroud)\n

注意:您可以将此文件夹命名为“bhandari”;任何你喜欢的名称(标准做法是将其命名为“env”...)

\n
    \n
  1. 现在要激活您的虚拟环境,请从您的文件夹目录中键入以下命令,这将激活 \xe2\x80\x9cbhandari\xe2\x80\x9d 文件夹中的虚拟环境
  2. \n
\n
source bhandari/bin/activate\n
Run Code Online (Sandbox Code Playgroud)\n
    \n
  1. 如果您已成功激活虚拟环境,您应该会看到 (bhandari) 字样,表明我们正在虚拟环境中工作。
  2. \n
\n

之后,我们可以安装任何与系统其余部分隔离的东西......

\n


nbw*_*ard 5

万一这可以帮助任何人,我在Ubuntu 18.04上也会遇到相同的错误。设置语言环境无效,尝试安装时python3-venv出现错误:

$ sudo apt-get install python3-venv
Reading package lists... Done
Building dependency tree
Reading state information... Done
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:

The following packages have unmet dependencies:
 python3-venv : Depends: python3.6-venv (>= 3.6.5-2~) but it is not going to be installed
                Depends: python3 (= 3.6.5-3) but 3.6.7-1~18.04 is to be installed
E: Unable to correct problems, you have held broken packages.
Run Code Online (Sandbox Code Playgroud)

看起来apt仓库有两个版本的python:

$ apt list python3 -a
python3/bionic-updates,now 3.6.7-1~18.04 amd64 [installed]
python3/bionic 3.6.5-3 amd64
Run Code Online (Sandbox Code Playgroud)

我尝试安装,Python3.6.5-3但很想卸载所有依赖项。我可以通过安装Python3.7并使用它创建venv来解决问题:

$ sudo apt-get install python3.7 python3.7-venv
$ python3.7 -m venv my_venv
Run Code Online (Sandbox Code Playgroud)


小智 5

我面临着同样的问题,我正在寻找解决方案。这是关于问题:

Ensurepip 在 Debian/Ubuntu 中对于系统 python 被禁用。

这是我的解决方案:

python3 -m venv myvenv --without-pip --system-site-packages
Run Code Online (Sandbox Code Playgroud)

  • 请注意,没有“pip”的 python 环境可能没有那么有用。 (3认同)

小智 5

尝试以下命令:

sudo apt install python-virtualenv
virtualenv --python=python3.6 myenv
Run Code Online (Sandbox Code Playgroud)

这些命令可能对您有用。

如果您收到类似E: Unable to locate package python3-venv Then 的错误,请尝试以下命令:

sudo apt install python3.6-venv
Run Code Online (Sandbox Code Playgroud)


小智 5

Python 已更新或默认 python 已更改且 venv 已安装

安装在您系统上的 venv 是由您以前的 python 版本安装(比如 python3.6)。这就是为什么 venv不适用于当前的 python 版本(比如说 3.8)。

所以首先检查你的默认 python 或 python3 版本,(假设你当前的版本是 python3.8)。

通过提及当前的python版本(3.8)来重新安装虚拟环境如下

sudo apt-get install python3.xx-venv        >> replace xx with your current/default python version
Run Code Online (Sandbox Code Playgroud)

如果这对你有帮助,请点赞,我是这个平台的新手。