###### tags: `Conda`
# Conda 用法備忘
### 查看虛擬環境列表
`conda env list`
### 建立虛擬環境
PS. myenv是環境名稱、python=3.5是環境內要用的python版本
`conda create --name myenv python=3.5`
or
`conda create -n myenv python=3.5`
### 啟動虛擬環境
`conda activate myenv`
### 在虛擬環境處理各種套件
PS. numpy 是套件名稱要代換
* **安裝指定版本套件**
`conda install numpy==X.X.X`
* **刪除虛擬機環境中的套件**
`conda uninstall numpy`
* **查詢套件**
`conda search numpy`
* **列出虛擬環境下以安裝的所有套件**
`conda list`
* **列出虛擬環境下含有指定keyword下的所有套件**
`conda list | grep keyword`
* **使用conda安裝requirement.txt (找不到安裝包就略過)**
`while read requirement; do conda install --yes $requirement; done < requirements.txt`
* **使用conda安裝requirement.txt (找不到安裝包就用pip安裝)**
`while read requirement; do conda install --yes $requirement || pip install $requirement; done < requirements.txt`
* **輸出conda環境為requirement.txt**
`pip freeze > requirements.txt`
* **輸出conda環境為environment.yml**
`conda env export | grep -v "^prefix: " > environment.yml`
* **備註**
* torch要打pytorch
### 複製虛擬環境
`conda create --name new_name --clone old_name`
### 離開虛擬環境
`conda deactivate`
### 刪除虛擬環境
`conda env remove --name myenv --all`
### 修改虛擬環境名稱
要先複製環境再刪掉舊的環境
`conda create --name NEW_NAME --clone OLD_NAME`
`conda remove --name OLD_NAME --all`
### 用指令下載dropbox資料
`wget --max-redirect=20 -O download.zip https://www.dropbox.com/sh/igoku2mqsjqsmx1/AAAeF57DR2ou_nZGC4JPoQKfa`
### 跟別人不一樣的安裝指令
有些套件預設channel裡面沒有,有些套件版本有缺,要切換去不同的channel安裝
常用的channel是 anaconda和conda-forge
#### cPython
`conda install -c anaconda cython`
#### pillow
`conda install -c anaconda pillow`
#### transformers(Bert)
`conda install -c conda-forge transformers`
---
### Jupyter kernel 相關
#### List Jupyter kernel
`jupyter kernelspec list`
#### Delete Jupyter kernel
`jupyter kernelspec uninstall unwanted-kernel`
### Add your Conda environment to your jupyter notebook
#### 建立一個環境
#### 在那個環境install ipykernel
`conda install -c anaconda ipykernel`
`python -m ipykernel install --user --name=firstEnv`
---
### 一些遇到的 Error 解決辦法
* **UnsatisfiableError: The following specifications were found**
* 套件之間版本衝突,或是強制指定的版本不匹配,不要強制指定版本
* **安裝tensorboardX** cannot import name 'SummaryWriter'
* 先安裝torchvision再裝tensorboardx
`conda install torchvision -c pytorch`
`conda install -c conda-forge/label/cf201901 tensorboardx`
* [**Intel MKL FATAL ERROR:**](https://blog.csdn.net/EricaApple/article/details/53634487)
* 這是anaconda的bug,用多行程就容易發生,先嘗試更新numpy
* 還是不行就去找log訊息裡是哪個library沒有link到
* `libmkl_avx.so,libmkl_def.so`這兩個沒link到就去`vim ~/.bashrc`裡新增
`export LD_LIBRARY_PATH=anaconda路徑/lib:/usr/local/cuda/lib64:$LD_LIBRARY_PATH`
* `libmkl_rt.so`沒link到就新增
`export LD_PRELOAD=anaconda路徑/lib/libmkl_rt.so`
* **the GPU program failed to execute at /opt/conda/conda-bld/pytorch_1533672544752/work/aten/src/THC/THCBlas.cu:249**
* 可能是pytorch的指向錯誤,把pytorch重新安裝並確認是否有跟其他套件衝突就好惹
* [**RuntimeError: cuda runtime error (10) : invalid device ordinal at torch/csrc/cuda/Module.cpp:32**](https://github.com/allenai/allennlp/issues/1090)
* CUDA device指定錯誤
* [**TypeError: _load_from_state_dict() takes 7 positional arguments but 8 were given**](https://github.com/huggingface/transformers/issues/122)
* pytorch版本問題 在0.4.0 _load_from_state_dict()僅接受7個參數,但在0.4.1版以後接受8個
* [**ValueError: numpy.ndarray size changed, may indicate binary incompatibility. Expected 88 from C header, got 80 from PyObject**](https://stackoverflow.com/questions/66060487/valueerror-numpy-ndarray-size-changed-may-indicate-binary-incompatibility-exp)
* numpy版本更新到至少1.20.1以上
* [**CUDA error: no kernel image is available for execution on the device**](https://heary.cn/posts/PyTorch%E6%8A%A5CUDA-error-no-kernel-image-is-available-for-execution-on-the-device%E9%97%AE%E9%A2%98%E8%A7%A3%E5%86%B3/)
* pytorch or python版本太高or太低
* **使用pytorch儲存模型時出現TypeError: can't pickle _thread.lock objects**
* 儲存的dict有錯