我最近设置了Python 3.6.8随附的Ubuntu 18.04.1桌面(带有Oracle VM)。在标准系统升级后,它变为3.6.9。后来我安装了Python 3.8,pip和venv,如下所示:
$ sudo apt install python3.8
$ sudo apt install python3-pip
$ sudo apt install python3-venv
如果我理解正确,则pip和venv都是这两个版本的通称,实际上我已经意识到pip3安装了3.6版本文件。我没有强行安装3.8版本的pip3。
现在,我可以使用Python 3.6创建虚拟环境,但仍然不能使用3.8创建虚拟环境。无法选择要从哪个Python复制(版本)创建虚拟环境。在旧的 virtualenv 和 virtualenvwrapper 解决方案中,有一个命令行选项可以定义版本:
mkvirtualenv -p python3.8 myvirtualenv38
或
mkvirtualenv -p python3.6 myvirtualenv36
我找不到 venv 的类似选项。 Some says,我们应该使用相应的Python版本运行 venv
python3.8 -m venv myvirtualenv38
但这将失败,并显示一条错误消息:
user@Server-Ubuntu:~/envs$ python3.8 -m venv env38a
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/envs/env38a/bin/python3.8', '-Im', 'ensurepip', '--upgrade', '--default-pip']
为新的虚拟环境创建了目录结构,但是例如,激活文件不存在。
其他信息:我也玩过 update-alternatives --config python3 ,但是由于Ubuntu 18似乎依赖于Python3.6而将默认值更改为3.8导致立即出现的问题,所以我停了下来例如在运行终端时。在上述过程中,我还没有尝试过临时更改版本。
答案 0 :(得分:2)
我终于找到了问题的答案...
必须为每个要使用虚拟环境的Python版本安装venv。因此正确的安装路径如下:
$ sudo apt install python3.8
$ sudo apt install python3-pip
$ sudo apt install python3.6-venv # needed only if you would like to use 3.6 with venv
$ sudo apt install python3.8-venv
在为不同版本创建了virtualenvs之后,如下:
mkvirtualenv -p python3.8 myvirtualenv38
和
mkvirtualenv -p python3.6 myvirtualenv36
# mkvirtualenv -p python3 myvirtualenv36 # this also installs v3.6 virtual environment
答案 1 :(得分:1)
您需要安装 venv 的正确版本:
sudo apt-get install python3.8-venv
安装后,只需运行:
python3.8 -m venv your_virtual_env
激活环境并确保其在Python 3.8上运行:
source your_virtual_env/bin/activate
python -V
>> Python 3.8.x