前言

本文假设在linux的机子上进行配置。由于作者经常需要在特定环境的代码中才能运行成功,因此最好是配置一个conda env虚拟环境(当然使用virtualenv也可以), 不过有些论文作者直接就是按照conda去配置,然后把一些依赖导出,因此本文说一下如何在linux上配置conda.



下载miniconda

该部分参考 https://blog.csdn.net/qq_42951560/article/details/109152114

暂时没感受到conda和miniconda的区别,我在linux上用Miniconda比较多。
可以去官网查看
https://docs.conda.io/en/latest/miniconda.html

也可以去清华镜像(推荐):
https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/

然后挑一个合适的版本(比如我想下载 Miniconda3-py38_4.8.3-Linux-x86_64.sh)。拷贝链接, 在终端输入(找一个文件夹即可)

wget https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/Miniconda3-py38_4.8.3-Linux-x86_64.sh

然后输入一下命令进行安装

bash Miniconda3-py38_4.8.3-Linux-x86_64.sh

中途可能需要输入yes或者回车

安装成功后添加一下环境变量

export PATH="【conda安装的位置】/bin:$PATH"

这个路径其实中途有输出

之后重新开一个终端,会发现已经命令行前面有提示环境了。

也可以看看虚拟环境列表。



快速创建环境极简版

这里python其他版本也行

conda create -n 【环境名字】 python=3.8

[optional] 装个pqi 切换一下pip 镜像源 pip镜像管理和npm镜像管理

然后

conda activate 【环境名字】 

后面缺啥就conda install 啥或者 pip 啥

这里提一嘴torch的安装,现在不建议状态低版本的torch了,有些依赖会要求一定版本以上,例如torchmetrics要求torch>=1.8.1

装的时候我是这样,为了快一点 可以去这里找https://download.pytorch.org/whl/cu111/torch/
然后再下载的目录下,离线安装pytorch

pip install torch-1.9.0+cu111-cp38-cp38-linux_x86_64.whl

对应的torchvision是0.10.0


attention
或者有时候把环境全下完太久了,选择性安装可以考虑如下
例如我需要一下环境(stylegan3)

Python 3.9.16     torch  1.9.1    torchvision 0.10.1

先创建个环境

conda create --name stylegan3 python=3.9.16

在安装pytorch

conda install pytorch=1.9.1 cudatoolkit=11.1 -c pytorch

然后再pip一些包 (这里可以边运行边pip, 就是代码报错说缺啥module你再pip相应包就行)

numpy
requests
click
pillow

by the way, 我尝试了一下, 以下环境在3090也是可用的。

python 3.7.6   torch 1.8.0+cu111  torchvision 0.9.0+cu111



conda常用命令

查看conda环境列表

conda env list

创建环境时(如xtreme, 下同)指定python版本, 例如3.7.5

conda create --name xtreme python=3.7.5

创建环境时指定依赖(例如将依赖的网址写在conda-env.txt的文件中。

conda create --name xtreme --file conda-env.txt
conda env create -f environment.yaml

有些依赖比如

https://conda.anaconda.org/pytorch/linux-64/pytorch-1.3.1-py3.7_cuda10.0.130_cudnn7.6.3_0.tar.bz2

可以替换成重庆邮电大学的镜像的文件:

http://mirrors.cqupt.edu.cn/anaconda/cloud/pytorch/linux-64/pytorch-1.3.1-py3.7_cuda10.0.130_cudnn7.6.3_0.tar.bz2

不过还是比较推荐配置成清华大学的镜像, 它支持的版本比较多, 很多库基本能在这下面两个链接找到: https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/
https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/linux-64/

https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/linux-64/pytorch-1.3.1-py3.7_cuda10.0.130_cudnn7.6.3_0.tar.bz2

激活名为xtreme的环境 (conda init后需要重启shell, 我们重新开一个终端就好了。

conda activate xtreme

删除名为xtreme的环境

conda remove -n xtreme --all




python版本问题

有时候可能作者的python版本和本地全局的不一样。虽然我们conda create了一个环境,但是会发现pip3管理的包共用了…(ps: 有趣的是,并不是每台机子都会遇到…比如我租的腾讯云(centos 7)没有遇到…感觉很玄学

有个问题就是,你跑代码的时候,找不到这个module, 但是你用pip3去install, 会提示这个包在另一个python版本的site-packages已经exits!

看了一篇博客 https://blog.csdn.net/qq_37344125/article/details/104418636, 发现也没能帮助我问题,我连site-package目录都没有。

于是查了一下, 发现conda的github issue #394 一个老哥提了一个问题,

但发现最后结论是 conda不负责管理这些包,啊这…(不知道是不是因为菜导致我理解错了…

于是我只能求助 pyenv (ps: 11.8这天我发现也可以不用pyenv, 详见本文的 【指定版本的python相应的pip工具安装packages】部分), 我原来本地是3.8多的版本, 想切换到 3.7.5, 原作者的python版本。

于是我下载3.7.5版本,有点慢, 当然国外服务器这个下载速度就还行(因为repo服务器本身也在国外)

pyenv install 3.7.5

切换源可参考 pyenv 安装 Python 使用国内源

也可以直接使用shell

$ v=3.8.5; curl -L https://npm.taobao.org/mirrors/python/$v/Python-$v.tar.xz -o >~/.pyenv/cache/Python-$v.tar.xz; pyenv install $v

然后把3.7.5设置为全局(不推荐,不符合软件工程规范,但我一时找不到好办法),这样pip3 install的包就能被项目的代码用上了。

pyenv global 3.7.5

如果下面两个可以work, 则不推荐设置为全局

pyenv local 3.7.5  # 设置当前工作目录开始向下递归继承
pyenv shell 3.7.5  # 只作用于当前会话



安装pyenv

如果环境没有pyenv, 那么 拷贝一下链接的内容:
https://raw.githubusercontent.com/pyenv/pyenv-installer/master/bin/pyenv-installer
写成一个sh文件,比如 pyenv_install.sh
然后bash pyenv_install.sh, 最后添加环境变量

export PATH=~/.pyenv/bin:$PATH
export PYENV_ROOT=~/.pyenv



指定版本的python相应的pip工具安装packages

例如我们用miniconda创建了一个虚拟环境xtreme, python的可执行路径在

/【用户名】/miniconda/envs/xtreme/bin/python

该路径可以通过 which python 命令找到(注意是在目标虚拟环境情况下)
那么用将numpy安装到该版本下的python对应的site-packages目录的方法如下

/【用户名】/miniconda/envs/xtreme/bin/python -m pip install numpy

这样子就可以直接不用安装pyenv就能解决问题了。



其他

todo…
以后遇到啥问题或者有更好方案再更新啦。

另外colab不知为何,下成功后,conda env list也有,但总是切换不过来,不知道是不是notebook没法切换的问题。

按照 Colab中安装conda - polyAI - 博客园 (cnblogs.com)操作也没法成功。

%%bash
MINICONDA_INSTALLER_SCRIPT=Miniconda3-4.5.4-Linux-x86_64.sh
MINICONDA_PREFIX=/usr/local
wget https://repo.continuum.io/miniconda/$MINICONDA_INSTALLER_SCRIPT
chmod +x $MINICONDA_INSTALLER_SCRIPT
./$MINICONDA_INSTALLER_SCRIPT -b -f -p $MINICONDA_PREFIX
import sys
_ = (sys.path
        .append("/usr/local/lib/python3.6/site-packages"))

(ps: 最后一行注意python的版本。

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐