pip和conda备忘

 

记录pip和conda的常用命令。

建议用conda管理环境,在conda环境里用pip,因为conda很多包下不了,而且很慢。

pip

通常python自带pip,如果没有可以用以下命令安装:

python -m ensurepip --default-pip

pip是python自带的可以执行的模块,可以使用python -m pip install 模块名来安装模块,由于每次都从模块编译很慢,所以python也提供了pip的可执行文件,可以直接用pip install 模块名来安装。pip安装的包默认在python\lib\site-packages中。

常用命令:

pip install some-package -i https://pypi.tuna.tsinghua.edu.cn/simple  # 从清华镜像下载指定的包
pip install pip -U -i https://pypi.tuna.tsinghua.edu.cn/simple  # pip更新
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple  # pip添加镜像源
pip list --outdate  # 列出不是最新版本的包
pip install --upgrade pip  # 更新pip
pip install --upgrade package  # 更新某个package

pip的缓存需要手动清理,用pip cache dir查看cache目录。

源码安装

pip install .
pip install -e .  # 代码不会被copy到site-package里,这样可以方便改源码

这里有个坑:pip源码安装后,通常会在python命令行测试能否成功import,这里要离开当前文件夹才能import,否则会报错,原因看这里

其它

  • m1 mac自带的python3支持x86和arm的包,默认下载arm的包,如果没有arm的包就用以下命令下载x86的包:

      arch -x86_64 $(which python3) -m pip install ...
    
  • pip list只列出包含xxx.dist-info文件夹的包,有些包不通过pip下载,也被装在site-packages里,pip list是不会列出这些包的。

    想查看所有包,可以通过:

      import pkgutil
      print([p[1] for p in pkgutil.iter_modules()])
    

    这可以列出所有包,包括官方的库。

conda

conda可以管理各种包,包括python和conda自身。

安装conda

linux非root用户的miniconda安装:首先下载用于安装的shell文件:

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

然后:

bash Miniconda3-latest-Linux-x86_64.sh

根据提示输入yes和enter进行安装。

conda换源:看https://mirrors.tuna.tsinghua.edu.cn/help/anaconda/的教程

查看channel:

conda config --show channels

基本使用

conda env list

conda create -n env_name python=3.9
conda activate env_name

conda search package_name
conda install package_name  # 在当前环境安装包
conda uninstall package_name
conda list  # 列出当前环境的包

conda deactivate
conda remove -n env_name --all


conda clean -a  # 删除所有缓存和不用的包
conda update conda  # 更新conda
conda update --all  # 更新所有
conda rename -n old_name new_name   # 重命名环境

conda的报错处理

  • 安装包的时候出现:

      Solving environment: failed with initial frozen solve. Retrying with flexible solve.
    

    说明包的依赖很难解决,可能是版本原因,可能是现在没有相应的包了。出现这种情况建议新开一个环境。如果用pip安装,pip不会像conda对依赖检查这么仔细,可能就不报错了。

      Solving environment: failed with repodata from current_repodata.json, will retry with next repodata source.
    

    不知道这个啥意思。

  • 现在python2.7已经不维护了,conda默认的channel下载不了,需要下载的话用这个channel:

      conda install python=2.7 -c 'https://repo.continuum.io/pkgs/free/osx-64'
      # 这个是macos的