230508_conda创建python虚拟环境

Haoliang Tang Lv2

conda就和nvm一样,作为独立于系统的虚拟环境。conda可以看作是高于python一个层级,就像nvm高于node一级,可以管理着不同版本的node。

conda创建不同的虚拟环境,各个虚拟环境要有一个名字,一个python版本号,然后各自的pip list,和本机系统无关。

conda并不是一个python的包,所以pip list里是没有conda的。它是高于python一级的虚拟环境软件。

开启conda后,deactivate就回到本机系统的python环境


再强调下:conda的目的就是用来管理Python虚拟环境的,而不用conda来装或者管理python包,包管理还是用pip。

Python虚拟环境管理还有venv之类的,但我还是倾向用conda,因为conda不需要记虚拟环境的绝对路径,任何目录下开终端都可以工作

安装conda

可以装anaconda或者我只需要conda的功能就只装miniconda

1
sudo pacman -S miniconda

(上面是用了archlinuxcn的包)

1
yay -S miniconda3

但是安装完以后,命令行shell还不能识别conda。其实安装完conda后会有提示信息告诉你怎么做

1
2
3
4
5
6
7
If your shell is Bash or a Bourne variant, enable conda for the current user with

$ echo "[ -f /opt/miniconda3/etc/profile.d/conda.sh ] && source /opt/miniconda3/etc/profile.d/conda.sh" >> ~/.bashrc

or, for all users, enable conda with

$ sudo ln -s /opt/miniconda3/etc/profile.d/conda.sh /etc/profile.d/conda.sh

zsh需要在~/.zshrc配置文件中,添加一句话

1
source /opt/miniconda3/etc/profile.d/conda.sh

复制到文件末尾就好了

fish的话和配置nvm如出一辙,编辑~/.config/fish/config.fish: (前提omf/fisher装了bass)

1
2
3
function conda
bass source /opt/miniconda3/etc/profile.d/conda.sh ';' conda $argv
end

(或者conda init fish就好了)

でも、より良いやり方:和刚才zsh的办法对应,在~/.config/fish/config.fish配置文件中,添加一句话

1
source /opt/miniconda3/etc/fish/conf.d/conda.fish

change owner以便可以修改文件たり,复制黏贴envs下的虚拟环境たり

1
sudo chown -R hl_tang:hl_tang /opt/miniconda3

创建虚拟环境

1
conda create -n tf1 python=3.6

-n后面是虚拟环境的名称,这里叫tf1,是我想再安装个tensorflow1的环境,本机是tensorflow2

然后指定python版本

environment location在: /home/hl_tang/.conda/envs/tf1 /opt/miniconda/envs/tf1/bin/python

activate后,用which python可以查看虚拟环境存放在哪里 (whereis列出更全)

当我降级了/opt的权限后,虚拟环境在/opt/miniconda/envsにある

激活与关闭虚拟环境

To activate this environment, use

1
$ conda activate tf1

To deactivate an active environment, use

1
$ conda deactivate

activate了以后,python -V就是虚拟环境的python版本了

删除虚拟环境

1
conda remove -n 需要删除的环境名 --all

ps: 一开始创建的虚拟环境是python3.9然后尝试pip install tensorflow,结果只能装tensorflow2

后来删了重建虚拟环境python3.6,pip install tensorflow==1.15成功安装


230815更新

AUR中的miniconda3升级到23.5.2-1后出现问题AttributeError: module ‘cryptography.hazmat.backends’ has no attribute ‘openssl’

解决:

进入conda安装目录下的bin目录,使用其下的pip删除旧版的包,然后重装新版的。

1
2
3
4
5
6
7
$ /opt/miniconda3/bin
$ ./pip list | grep pyOpenSSL
pyOpenSSL 23.0.0
$ ./pip list | grep cryptography
cryptography 39.0.1
$ sudo ./pip uninstall cryptography pyOpenSSL
$ sudo ./pip install cryptography pyOpenSSL
1
conda env list

就正常了

  • Title: 230508_conda创建python虚拟环境
  • Author: Haoliang Tang
  • Created at : 2023-05-08 00:00:00
  • Updated at : 2023-11-02 20:14:05
  • Link: https://hl-tang.github.io/2023/05/08/230508_conda创建python虚拟环境/
  • License: This work is licensed under CC BY-NC-SA 4.0.
 Comments
On this page
230508_conda创建python虚拟环境