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


88

几天前,我从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

但这并不能解决我的问题。


我的问题已在操作系统上通过发行信息解决:发行商ID:LinuxMint说明:Linux Mint 18.3 Sylvia发行:18.3
nix

没有答案为我解决。仍然停留在相同的错误上
Shoaib Iqbal

Answers:


114

看来这是一个地区问题。通过执行以下方法解决:

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

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


34
这很疯狂,但这是真的
user1703761

8
真的很好奇,但是有人知道原因是什么?
Juan Antonio

不适用于具有发行版信息的OS:发行商ID:LinuxMint说明:Linux Mint 18.3 Sylvia发行:18.3
nix

1
谢谢,在这里运行最小的docker设置。我永远不会猜到
Antti Haapala '18

1
@JuanAntonio似乎Ubuntu(至少16.04)是开箱即用的非Unicode小酒馆,如本期所述:tickets.puppetlabs.com/browse/IMAGES-498 猜猜我们应该在服务器自举中添加语言环境设置。 。
安德烈亚斯·伯格斯特龙

106

尝试安装python3.6-venv:

sudo apt-get install python3.6-venv

感谢您的解决方案。它可以在16.04上运行(当然已经安装了python3.6)。我不明白的是:1. venv应该精确地使apt-get变得不必要。它是标准库的一部分。2.为什么使用venv的默认pip版本不是最新版本?
Lionel Trebuchon18年

26
...或者sudo apt-get install python3.7-venv如果您使用python 3.7
Alleo,

12
...或者sudo apt-get install python3.8-venv如果您使用python 3.8
cowlinator

3
...或者sudo apt-get install python3.9-venv如果您使用python 3.9(以备将来使用)
Andrey Semakin

7
...或者sudo apt-get install python3.10-venv如果您使用python 3.10(以防我们在2020年幸免于难)
Steven667,

44

另一个答案是上次为我修复了它,但是对于Python 3.7,我不得不这样做:

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

其次是

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

22

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

我跑了:

sudo apt update
sudo apt upgrade

然后sudo apt install python3-venv工作。

请注意,我之前也曾尝试过UTF-8解决方案.bashrc已将它作为我的一部分),因此这可能是一个重要因素。


4
我认为UTF-8解决方案并不重要。我也在WSL Ubuntu 18.04上运行,sudo apt update并且sudo apt install python3-venv足够了。
Theja

1
这是唯一对我有用的解决方案!我尝试更改语言环境并安装较新版本的Python
无用

2
这对我也有效,我尝试了其他几种选择..它不起作用,
Learner

辉煌,为我工作!!!
Reckoner

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]

8

万一这可以帮助任何人,我在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

1
这对我有用。难道sudo apt install python3.8 python3.8-venv,并使用创建的虚拟环境python3.8 -m venv venv_name。谢谢!
阿米尔·沙巴尼

5

我在最近发行的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

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

编辑:

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

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


1
sudo apt install python3.8-venv是我的赢家。我可以找到的所有其他帮助都让我尝试安装python3-venv
user1717828

4

遇到问题时,在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

3

尝试: python3.* -m venv myvenv -

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


2

我有同样的问题-python env有2个版本,分别为2.7和3.6。

您需要做的只是:

  1. 通过安装pyenv安装程序来安装最新版本的pip
  2. 确保您遵循此处找到的安装pyenv的步骤

祝好运!


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

2

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

确保在Debian / Ubuntu中禁用了系统python。

这是我的解决方案:

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

请注意,没有的python环境pip可能没有那么有用。
ankostis

1

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


1

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


这正是我的问题。当我更改为当前用户的主目录时,该命令运行良好。这必须是一个错误,它假设在实际遇到权限问题时未安装python3-venv。
Cosmicnet

1

尝试以下命令:

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

这些命令可能对您有用。

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

sudo apt install python3.6-venv

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 list python3 -a python3 / bionic 3.6.5-3 amd64

随着sudo apt-get install python3-venv/bionic我可以安装pythno3-VENV和一切工作。


我使用ubuntu大约有5年了,但是我从未见过这种语法“ python3 / bionic”:O您的回答解决了我的问题,谢谢。
kodmanyagha

很高兴它可以工作,我也不知道该语法,我只是尝试过,因为“ apt list”确实以这种方式显示了软件包;-)如果该答案对您有帮助,您可以单击“向上”按钮。
Stefan

如果可以使用非标准软件包名称,则意味着您已配置了非标准软件包源。apt-cache policy python3/bionic可能会帮助您弄清楚该软件包的来源。它不是来自Ubuntu。
tripleee

0

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

最后,该命令可以在不更改语言环境的情况下实现。

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


0

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

sudo apt-get update

然后

sudo apt-get install -y python3-venv zip


-1
sudo apt-get update 

为我工作。

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


3
请详细说明您的答案为什么可以解决问题。
RyanNerd

1
运行命令和更新软件包树并不能解决问题,请详细说明
Andres Felipe

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.