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

时间:2016-09-16 19:47:13

标签: virtualenv locale python-3.5 ubuntu-16.04

我几天前从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: ['/usr/bin/python3.5', '-Im', 'ensurepip', '--upgrade', '--default-pip']

我尝试过同时运行

sudo apt-get install python3-venv

sudo apt-get install python3.5-venv

但它没有解决我的问题。

有人可以帮忙吗? 谢谢

28 个答案:

答案 0 :(得分:73)

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

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

在此帖子Python locale error: unsupported locale setting

上找到

答案 1 :(得分:27)

尝试安装python3.6-venv:

sudo apt-get install python3.6-venv

答案 2 :(得分:9)

就我而言,以下步骤有效:

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

答案 3 :(得分:7)

另一个答案是上次为我修复的,但是我必须使用Python 3.7:

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

之后

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

答案 4 :(得分: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

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

答案 5 :(得分:3)

也尝试安装 python3-distutils
共, 对于 python 3.8,以下对我有用。

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

答案 6 :(得分:3)

我遇到了同样的问题,我正在寻找解决方案。关于这个问题的:

在Debian / Ubuntu中,系统python禁用了ensurepip。

这是我的解决方案:

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

答案 7 :(得分:2)

尝试以下命令:

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

这些命令可能对您有用。

如果您遇到类似E: Unable to locate package python3-venv的错误 然后尝试以下命令:

sudo apt install python3.6-venv

答案 8 :(得分:2)

对于最新版本的 Python-3.8 ,我在 Ubuntu 18.04 上遇到了此问题。我的解决方案是添加Deadsnakes PPA来提供所需的python3.8-distutils软件包。 python3.8-venv软件包已在存储库中。感谢this blogpost

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存储库中提供。

答案 9 :(得分:2)

如果您打算获取python3.8 incl。 Ubuntu 18.04上的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#->来自/home/user/venv/lib/python3.8/site-packages(python 3.8)的pip 9.0.1

答案 10 :(得分:1)

我的问题与权限和所有权有关。 我用其他用户作为当前目录的所有者登录,这导致了此错误。 查看并修复所有权限后,我能够安装venv normall

答案 11 :(得分:1)

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

调查结果

我尝试使用以下方法手动创建 venv:

python -m venv venvdir

这和其他人提到的一样失败了。但它确实创建了 venv 的外壳。所以我尝试运行 ensurepip

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 对那里的重复如此敏感......可能是某个包升级出了问题。

答案 12 :(得分:1)

this answer上解决了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

答案 13 :(得分:1)

尝试:python3.* -m venv myvenv -

别忘了用您的特定版本的python替换*

答案 14 :(得分:1)

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

我跑了

sudo apt update
sudo apt upgrade

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

请注意,我也曾尝试过UTF-8 solution(我将其作为.bashrc的一部分),所以这可能是一个重要因素。

答案 15 :(得分:1)

万一这可以帮助任何人,我在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,但很想卸载所有依赖项。我可以通过安装Python3.7并使用它创建venv来解决该问题:

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

答案 16 :(得分:1)

我有同样的问题 - python env有2.7和3.6的两个版本。

您需要做的就是:

  1. 安装pyenv installer
  2. 安装最新版本的pip
  3. 请务必按照安装pyenv found here
  4. 的步骤进行操作

    祝你好运!

答案 17 :(得分:0)

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

$ 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列表python3 -a python3 / bionic 3.6.5-3 amd64

使用sudo apt-get install python3-venv/bionic,我可以安装pythno3-venv,一切正常。

答案 18 :(得分:0)

sudo apt-get update 

为我工作。

编辑:我很想知道问题出在哪里,但我不知道。我尝试按照发问者的描述运行命令,但给出了错误,然后进行了更新并正常工作。 :-D

答案 19 :(得分:0)

就我而言,运行sudo apt-get install python3.8-venv可以成功,但是运行python3 -m venv .venv时也会显示相同的错误。

最后,此命令可以执行而无需更改语言环境。

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

答案 20 :(得分:0)

执行python3 -m venv venv时,我对现有项目也遇到了同样的问题。我刚刚更新了Ubuntu和Python版本。删除现有的venv文件夹后,问题已解决。 (我也尝试过Steps_to_Install。)

答案 21 :(得分:0)

这对我有用... 首先,我跑了

sudo apt-get update

然后

sudo apt-get install -y python3-venv zip

答案 22 :(得分:0)

这是我对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!
    

    如果从上面的python3.4-venv命令中删除了apt-get install,则python3.4 -m venv会显示与问题相同的错误消息。但是,错误消息中提到了apt-get install python3-venv来解决它,但是那行不通,没有这样的程序包。 (正确的软件包名称为python3.4-venv。)

    请注意,Python 3.4相当老,并且PyPI中的某些Python软件包(通过pip)无法使用。

  • 3.5:可以从deadsnakes存储库中安装它。它的工作原理:

    $ 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:同上,可以从deadsnakes存储库中安装它。它的工作原理:

    $ 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失败,并且deadsnakes repo中的python3.7没有该模块,因为Ubuntu 14.04在旧版本中附带Python 3.7不支持的OpenSSL版本。在this bug中查看更多详细信息。

  • 3.8--:在Ubuntu或Deadsnakes存储库中没有适用于这些Python版本的Ubuntu 14.04软件包。

答案 23 :(得分:0)

最近遇到了同样的问题。上面提到的解决方案都不适合我。我最终通过安装 pip3 让它开始工作。

apt-get install python3-pip

# then run
python3.8 -m venv env

答案 24 :(得分:0)

尝试以下命令: sudo apt-get install python3.8-venv 这对我有用

答案 25 :(得分:0)

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

使用 pip wheels . 会减少误导性的错误信息。

答案 26 :(得分:0)

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

答案 27 :(得分:-2)

这些都不适合我。 我正在使用Ubuntu 18.04。 只是完全卸载了anaconda,一切正常。张贴以防万一。 有关要卸载的命令: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