如何在Ubuntu 16.04上使用virtualenv和Python3.6?

47

我正在使用Ubuntu 16.04,它自带Python 2.7和Python 3.5。我已经在上面安装了Python 3.6,并通过alias python3=python3.6将python3的符号链接到python3.6。

然后,我使用sudo -H pip3 install virtualenv安装了virtualenv。当我检查时,virtualenv被安装在"/usr/local/lib/python3.5/dist-packages"位置,因此当我尝试使用python3 -m venv ./venv1创建虚拟环境时,会出现错误:

Error Command: ['/home/wgetdj/WorkPlace/Programming/Python/myvenv/bin/python3', '-Im', 'ensurepip', '--upgrade', '--default-pip']

我该怎么办?


1
你尝试过使用 update-alternatives 吗? - Charles Pehlivanian
@AhmedNourEideen 我拒绝了你的建议编辑;请不要将非代码内容添加代码格式。 - tripleee
5个回答

61

通常使用$ python3 -m venv myvenv来创建新的虚拟环境(这里myvenv是虚拟环境的名称)。

如果您的系统中同时安装了python3.5python3.6,则可能会遇到一些错误,与我情况类似。

注意:在某些版本的Debian / Ubuntu上,您可能会收到以下错误:

 The virtual environment was not created successfully because ensure pip is not available.  On Debian/Ubuntu systems, you need to install the python3-venv package using the following command.
      apt-get installpython3-venv  
 You may need to use sudo with that command.  After installing the python3-venv package, recreate your virtual environment. 

在这种情况下,请按照上述说明并安装python3-venv包:

$ sudo apt-get install python3-venv

注意: 在某些版本的Debian/Ubuntu上,像这样初始化虚拟环境目前会产生以下错误:

Error Command: ['/home/wgetdj/WorkPlace/Programming/Python/myvenv/bin/python3', '-Im', 'ensurepip', '--upgrade', '--default-pip']

为了解决这个问题,使用virtualenv命令。

$ sudo apt-get install python-virtualenv
$ virtualenv --python=python3.6 myvenv

注意:如果您遇到像以下错误:

E: 无法定位软件包 python3-venv

那么请运行以下命令代替:

sudo apt install python3.6-venv

非常详细的回答,但是由于“sudo apt install python3.6-venv”导致更多的错误,所以我变得懒惰并选择了Orny的答案,它似乎有效。 - shermy
1
无法找到软件包python3.6-venv 无法通过通配符'python3.6-venv'找到任何软件包 无法通过正则表达式'python3.6-venv'找到任何软件包 - Coffee inTime

22

通过使用 ppa:deadsnakes/ppa 安装 python3.6python3.6-venv,而不是使用 ppa:jonathonf/python-3.6,对我来说起作用了。

apt-get update \
&& apt-get install -y software-properties-common curl \
&& add-apt-repository ppa:deadsnakes/ppa \
&& apt-get update \
&& apt-get install -y python3.6 python3.6-venv

3
这对我有用。似乎近期在jonathonf的代码库中引入了一些错误。我需要先降级为标准软件包,请参见https://askubuntu.com/a/899668/320633。 - Jonas Dahlbæk

19

Ubuntu

首先确保您已安装Python 3.6,否则可以使用以下命令进行安装:

sudo add-apt-repository ppa:deadsnakes/ppa   
sudo apt-get update   
sudo apt install python3.6

现在安装venv,即执行以下命令:
sudo apt-get install python3.6-venv python3.6-dev
python3.6 -m venv venv_name

你可以安装Python3.7/3.8,并使用上述命令创建相应的虚拟环境,只需将3.6替换为3.X。
对于Mac用户: python3 -m venv venv_name

1
在我的Ubuntu 20上工作得很好。 - Vadim

2

我认为问题可能与不正确的区域设置有关。 我添加了以下行到/etc/environment来解决它:

LC_ALL=en_US.UTF-8
LANG=en_US.UTF-8

你需要在bash中使用以下命令获取文件:

你需要在bash中使用以下命令获取文件:

source /etc/environment

什么都不起作用。我尝试了每一个解决方案,但没有一个有效。哪个版本的Ubuntu已经解决了这个bug,这样我就可以安装它并卸载我目前的版本? - chibole

1
如果您遇到以下令人烦恼的错误:
E: Unable to locate package python3-venv

尝试使用以下命令:

sudo apt-get update

sudo apt-get install software-properties-common

sudo add-apt-repository ppa:deadsnakes/ppa

sudo apt-get update

sudo apt-get install python3.6

这些方法对我有用,希望能帮到你!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接