Pyvenv 不工作,因为 ensurepip 不可用

几天前我从 ubuntu 14.04升级到了 ubuntu 16.04。 当我尝试使用

pyvenv .venv

或者

python3 -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/user/.venv/bin/python3.5', '-Im', 'ensurepip', '--upgrade', '--default-pip']

我都试过了

sudo apt-get install python3-venv

还有

sudo apt-get install python3.5-venv

但这并没有解决我的问题。

135710 次浏览

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

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

发现了这个线程 Python 区域设置错误: 不支持区域设置

尝试安装 python3.6-venv:

sudo apt-get install python3.6-venv

我遇到了同样的问题—— python env 有两个版本分别用于2.7和3.6。

你要做的就是:

  1. 通过安装 Pyenv 安装程序来安装 pip 的最新版本
  2. 请确保遵循安装发现 给你的 pyenv 的步骤

祝你好运!

另一个答案上次帮我解决了这个问题,但是对于 Python 3.7,我不得不这样做:

apt install python3-pip python3-setuptools python3.7-venv

接下来

python3.7 -m venv /path/to/venv

如果这对任何人都有帮助的话,我在 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.

而且看起来 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

我尝试安装 Python3.6.5-3,但 apt 想卸载每个依赖项。我可以通过安装 Python 3.7并用它创建 venv 来解决这个问题:

$ sudo apt-get install python3.7 python3.7-venv
$ python3.7 -m venv my_venv

在 Windows Linux 子系统和 Ubuntu 18.04下,这是因为我最近没有升级。

我跑过去:

sudo apt update
sudo apt upgrade

然后 sudo apt install python3-venv成功了。

请注意,我也尝试了之前的 UTF-8解决方案(我把它作为我的 .bashrc的一部分) ,所以这可能是一个影响因素。

试试: python3.* -m venv myvenv -

不要忘记用特定版本的 python 替换 *

在执行 python3 -m venv venv时,我在一个现有的项目中遇到了同样的问题。我刚刚更新了我的 Ubuntu 和 Python 版本。删除已经存在的 venv文件夹后,问题就解决了。(我也试过 UTF-8解决方案。)

sudo apt-get update

对我有用。

编辑: 我很想知道到底是什么问题,但我不知道。我试着按照提问者的描述运行命令,结果出现了错误,然后我更新了命令,它工作了。歌曲:-D

在最近发布的 巨蟒3.8中,我在 Ubuntu 18.04上遇到了这个问题。我的解决方案是添加 死蛇 PPA提供所需的 python3.8-distutils包。python3.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

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

编辑:

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

正如在本帖的其他评论中提到的,可能不需要 distutils。这是为我的用例,但请考虑解决方案之前添加额外的 PPA 的。

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

% sudo apt-get install python3.8-venv

这就是这句话的意思:

% python3.8 -m venv ~/envs/new_env
% source ~/envs/new_env/bin/activate

如果你想在 Ubuntu 18.04上获得 python3.8包括 pip 和 venv:

  • sudo apt install python3.8 python3.8-venv python3-pip # 没有 python3.8-pip 包
  • python3.8 -m venv venv
  • source venv/bin/activate
  • python --version #-> python 3.8.0
  • pip --version #-> pip 9.0.1 from/home/user/venv/lib/python3.8/site-package (python 3.8)

所有这些建议对我都没有帮助。

$ apt list python3 -a
python3/now 3.6.7-1~18.04 amd64 [installed,local]
python3/bionic 3.6.5-3 amd64

所以我做了: sudo apt-get install python3/bionic

现在我有了 python 3.6.5,apt-list 显示了一个更好的列表: $apt list python3-a 蟒蛇3/仿生3.6.5-3 amd64

有了 sudo apt-get install python3-venv/bionic,我可以安装 pythno3-venv,一切工作。

对我来说,接下来的步骤奏效了:

  • Ubuntu 18.04.4 LTS
 $ sudo apt-get install python3-venv python3.7-venv
$ python3.7 -m venv [your_path_to_virtual_env_here]

我的问题与权限和所有权有关。 作为工作目录的所有者,我与另一个用户登录,导致了这个错误。 在检查和修复所有权限之后,我能够安装 venv 常规

在我的例子中,运行 sudo apt-get install python3.8-venv成功,但是它在运行 python3 -m venv .venv时显示相同的错误。

最后,这个命令在不改变区域设置的情况下工作。

python3.8 -c 'import venv; venv.create(".venv", with_pip=True)'

我也面临着同样的问题,我正在寻找解决办法:

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

这就是我的解决办法:

python3 -m venv myvenv --without-pip --system-site-packages

这些对我都不管用。 我正在使用 ubuntu 18.04。 只要卸载水蟒完全和一切工作。张贴只是为了以防它帮助任何人。 要卸载的命令: < a href = “ https://linuxize.com/post/how-to-install-anaconda-on-ubuntu-18-04/”rel = “ nofollow norefrer”> https://linuxize.com/post/how-to-install-anaconda-on-ubuntu-18-04/

rm -rf ~/anaconda3
export PATH="/home/linuxize/anaconda3/bin:$PATH"
rm -rf ~/.condarc ~/.conda ~/.continuum

这招对我很管用。 首先,我跑了

sudo apt-get update

然后

sudo apt-get install -y python3-venv zip

尝试以下命令:

sudo apt install python-virtualenv
virtualenv --python=python3.6 myenv

这些命令可能对你有用。

如果出现像 E: Unable to locate package python3-venv这样的错误 然后尝试以下命令:

sudo apt install python3.6-venv

这是我对 Ubuntu 14.04的回答。我能够使 venv 和 pip 与各种 Python 版本一起工作。详情:

  • 3.4: Ubuntu 14.04有 Python 3.4(就像 python3.4包一样):

    $ sudo apt-get install python3.4 python3.4-dev python3.4-venv gcc libc6-dev
    $ mkdir /tmp/try3.4
    $ python3.4 -m venv /tmp/try3.4
    $ . /tmp/try/bin/activate
    (try3.4) $ pip install print-hello-world
    ...
    (try3.4) $ print-hello-world
    Hello World!
    

    如果从上面的 apt-get install命令中删除了 python3.4-venv,那么 python3.4 -m venv将显示与问题中相同的错误消息。但是,错误消息提到 apt-get install python3-venv来解决它,但是这不起作用,没有这样的包。(正确的包名称是 python3.4-venv。)

    请注意,Python 3.4已经相当老了,PyPI (通过 pip)中提供的一些 Python 包并不支持它。

  • 3.5: 可以从死蛇仓库安装,它可以工作:

    $ sudo add-apt-repository ppa:deadsnakes/ppa
    $ sudo apt-get update
    $ sudo apt-get install python3.5 python3.5-dev python3.5-venv gcc libc6-dev
    $ mkdir /tmp/try3.5
    $ python3.5 -m venv /tmp/try
    $ . /tmp/try/bin/activate
    (try3.5) $ pip install print-hello-world
    ...
    (try3.5) $ print-hello-world
    Hello World!
    
  • 3.6: 同上,它可以从死蛇存储库安装。它的工作原理:

    $ sudo add-apt-repository ppa:deadsnakes/ppa
    $ sudo apt-get update
    $ sudo apt-get install python3.6 python3.6-dev python3.6-venv gcc libc6-dev
    $ mkdir /tmp/try3.6
    $ python3.6 -m venv /tmp/try3.6
    $ . /tmp/try3.6/bin/activate
    (try3.6) $ pip install print-hello-world
    ...
    (try3.6) $ print-hello-world
    Hello World!
    
  • 3.7: 它不能工作,因为 pip installimport _ssl中失败了,而且 python3.7没有这个模块,因为 Ubuntu 14.04附带了旧版本的 OpenSSL,而 Python 3.7不支持。请参阅 这个窃听器中的详细信息。

  • 3.8—— : Ubuntu 14.04软件包中没有这些 Python 版本的 Ubuntu 或死蛇软件库。

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

如果这能帮助你提升选票,我是这个平台的新人。

也试着安装 python3-distutils
总而言之, 对于 python 3.8,以下内容对我很有用。

$ apt-get install python3.8 python3.8-venv python3.8-distutils python3.8-dev


我只是在几个 Debian/Ubuntu 系统上遇到了这个问题,和上面一样的错误。

调查结果

我试图手动创建一个 venv:

python -m venv venvdir

正如其他人提到的那样,这种做法失败了。但是 是的创建了 venv 的外壳。所以我试着运行 保证:

venvdir/bin/python -m ensurepip


Traceback (most recent call last):
File "/usr/lib/python3.9/runpy.py", line 197, in _run_module_as_main
return _run_code(code, main_globals, None,
File "/usr/lib/python3.9/runpy.py", line 87, in _run_code
exec(code, run_globals)
File "/usr/lib/python3.9/ensurepip/__main__.py", line 5, in <module>
sys.exit(ensurepip._main())
File "/usr/lib/python3.9/ensurepip/__init__.py", line 266, in _main
return _bootstrap(
File "/usr/lib/python3.9/ensurepip/__init__.py", line 166, in _bootstrap
copy_wheels(dependencies, venv_wheel_dir, sys.path)
File "/usr/lib/python3.9/ensurepip/__init__.py", line 144, in copy_wheels
assert len(wheel_names) == 1, wheel_names


AssertionError: ['/usr/share/python-wheels/pyparsing-2.2.0-py2.py3-none-any.whl', '/usr/s
hare/python-wheels/pyparsing-2.4.7-py2.py3-none-any.whl']

这看起来很奇怪。快速浏览一下 /usr/share/python-wheels/,就会发现——实际上——错误提示的同一个车轮的多个版本。我有 没有的线索,为什么 ensurepip 也确保它只找到一个车轮文件,去图。

解决方案

dpkg -S /usr/share/python-wheels的检查表明,python-pip-whl包是这些文件的来源。Ubuntu 和 Debian 似乎都是如此。

所以,我照做了:

cd /usr/share
sudo mv python-wheels python-wheels.old
sudo apt reinstall python-pip-whl

而且它起作用了——没有更多的错误。在 /usr/share/python-wheels中不再有重复

完全不知道为什么会有副本,或者为什么 ensurepip 对副本如此敏感... ... 可能某个软件包升级出了问题。

最近也遇到了同样的问题。上面提到的解决方案对我都不管用。我最终通过安装管道3使其工作。

apt-get install python3-pip


# then run
python3.8 -m venv env

如果您在尝试运行 python -m build来构建 Python 包时遇到这个问题,这意味着在 setup.cfgsetup.py文件中可能存在语法问题,导致创建安装依赖项所需的临时 venv 时出错。

使用 pip wheels .可以减少误导性错误消息。

对于 Linux,默认情况下不安装它,必须安装 venv

// at first check python version
python --version


// install
sudo apt update
sudo apt install python3.8-venv
sudo apt install python3.8-distutils


// create new env
python3 -m venv project-name
source project-name/bin/activate
  1. 首先,创建一个目录:
mkdir testing
  1. 然后,移动到这个名为 test 的目录:
cd testing
  1. 在此目录中键入以下命令时:
python3 -m venv env

你犯了这样的错误:

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

apt install python3.8-venv
  1. 输入以下命令,但在此之前,请密切关注您安装在计算机上的 python 版本; 在我的示例中是 python3.8
sudo apt install python3.8-venv
  1. 现在,我们可以创建一个虚拟环境并将其工具存储在“ bhandari”文件夹中。
python3 -m venv bhandari

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

  1. 现在要激活您的虚拟环境,从您的文件夹的目录,输入以下命令,这将激活我们的“ bhandari”文件夹中的虚拟环境
source bhandari/bin/activate
  1. 如果您已经成功地激活了虚拟环境,您应该会看到(bhandari)这个词表示我们正在虚拟环境中工作。

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

在我的例子中,命令失败是因为我仍然处于虚拟 env 中,但没有很快发现它。

如果是这种情况,请尝试调用 deactivate

我没有 sudo 权限,我必须使用 python3.5:

  1. 安装 viralenv: pip3 viralenv
  2. 创建没有 pip 的 viralenv: python3-m venv —— without-pip < path >
  3. 下载适当的 pip 引导程序: https://bootstrap.pypa.io/pip/3.5/get-pip.py
  4. 运行: < path >/bin/python3 get-pip.py

我做了“ source < path >/bin/active”,得到了一个工作环境。

我不得不提到 python具体版本,并将 python3.10替换为您的版本

 $ sudo apt-get update -y && sudo apt-get upgrade -y
$ sudo apt-get install python3.10-venv

创建虚拟环境

$ python3.10 -m venv --system-site-packages Project_Name