conda环境原理及pip install原理
conda
新建环境
conda create -n myenv python=3.6
当运行上面的语句并确认后
- 将会开始下载数据包至
pkgs
文件夹下,一个包对应生成一个文件,一个文件夹以及更改一个文件。- 文件
pkg_name.conda
或pkg_name.tar.bz2
文件,pkg_name是包名,例如可以为python-3.6.13-hdb3f193_0,一般使用官方源为后缀为.conda,国内源后缀.tar.bz2 - 解压安装后的
pkg_name
文件夹 - 更改url.txt 在其后面追加一行 内容为下载该包的网址
- 文件
- 全部包下载完成后,将会在
envs
文件夹下新建一个与环境名相同的文件夹,文件夹内即是环境所需内容,另外在envs同级路径下的environments.txt
追加一行,内容环境的绝对路径,例如为/home/intleo/.conda/envs/myenv
环境位置
另外, pkgs
和envs
以及environments.txt(可无)
在同一文件夹下,该文件夹位置分两种情况
anconda
安装在公共目录/usr/local/anaconda3
时文件夹为~/.conda
文件夹- anconda安装在用户目录下,例如
~/soft/anaconda3
,文件夹位置就为~/soft/anaconda3
环境复制
相同软件系统下具有相同cuda,可以直接复制envs下的环境文件夹至其他机器或同机器下的其它用户,其他用户可以直接使用,例如解释器选择~/.conda/envs/myenvbin/python
即可直接使用
以上本人在同一机器下的不同用户上复制可用torch等
也可使用 conda pack进行打包,可参考链接,但当时由于依赖文件外的mmdetection未能成功
PS,conda 新建环境和conda install前会先搜索pkgs或者url.txt,之前下载过的包会直接加载用于新环境的安装
pip
linux原生pip
pip其实是python的一个模块,调用pip时就会调用python来执行,以原生环境为例(非conda),Linux系自带的python是2.7版本,可执行python查看
一般python是软连接到python2.7了,可执行ls -l /usr/bin | grep python
查看所有已安装python版本,比如我的主机就还安装有python3.5
每个python版本对应一个pip,我们来查看pip的内容可以发现其就是一个脚本文件,和其他脚本文件在第一行指定好解释器,如下图指定的是/usr/bin/python,即使用这个原生pip安装的包将可被/usr/bin/python调用,并且自己安装的包将会存在于/usr/lib/python2.7/site-packages
那么我们如果想指定执行某个python版本的pip并安装包到这个python下面该如何操作呢?可直接python3.X -m pip install XXX
,3.X
是代表版本号,例如执行python3.5 -m pip show pip,若没有这个包一般是因为还未安装pip3,可先执行sudo apt install python3-pip
安装
安装完成后,可执行pip3 show pip查看安装位置,可以看到安装在了python3的包下面,这个目录下面的
我们当前的环境是只有一个python3版本python3.5,使用pip3安装东西必然会安装至python3.5下的site-packages里,若有多个python3版本,我们可以执行python3.X -m pip 来调用,由于安装的pip版本较低,我们可以先更新下python3.5 -m pip install --upgrade pip
,这里由于python3.5版本原因,部分语法未适配最新版的pip,可尝试升级python版本
jetson nano分析
由于亚博自带的镜像中,python3版本为3.6.9,在使用上还是有很多局限的,故本节将升级python版本,这里简单介绍下python包管理机制,板子自带python3.6.9,由于大多数系统都会带一个低版本(9.0.1)的pip,然后每个python版本如果安装了pip都会对应一个自己版本的pip module,例如执行pip show pip
或者python3 -m pip show pip
可以看到自带的python 3.6.9对应的pip就存放在 /home/nano/.local/lib/python3.6/site-packages
中,即python3.6的包下
执行sudo apt-get install python3.8
,即可安装python3.8,但此时你执行的pip3还是python3.6的,可执行pip show pip
查看.
系统自带了一个pip(9.0.1),可执行python3.8 -m pip show pip
查看,pip位于/usr/lib/python3/dist-packages
因此需要为python3.8安装pip模块,执行python3.8 -m pip install --upgrade pip
即可安装,python3.8 -m pip show pip
显示的就是位于python3.8下
且此时直接执行pip show pip
也是python3.8下的,因为安装完成后,已将pip3.8安装到了本地bin中,且将默认的pip换成了pip3.8版本的
conda环境
若conda新建的环境为python3.6的,那么pip3下载的包将会放置在envs/myenv/lib/python3.6/site-packages