磕磕絆絆用到現在,最近又發現了 conda 的一個大坑,決定跳回 pip 的懷抱,在此記錄一下心路歷程。注意有大量的冗余信息,不給過讀下來應該對 pip 的理解還是有助益的,若僅需要安裝上面兩個包的話直接 pip 即可,前提是正確配置😝
- 之后的打算,只把 conda 用做簡單的 VirtualEnvironment 管理工具,package 管理只用 pip。
涉及的問題有:
- 如何安裝 pip
- 關於全局代理
ALL_PROXY
和 Python - 安裝 VTK 和 nibabel 的正確姿勢
關於這個故事
故事的起源是這樣的:可視化課程上需要安裝 VTK ,以及 Nifty data 需要的 nibabel 包
-
VTK 和 Python 中的 VTK 包不太清楚有和關系,這里僅討論 Python 版本的,官方網址在 https://pypi.org/project/vtk/
-
Orz 問題就在於 Tutorial 中給出了多種的安裝方式,首先是官網 https://vtk.org/ 在 Download 中可看到最新是 9.0.0 版本,這里只給出了下載 Python Wheel 手動安裝的方式,作為一個懶人忽略了這一方案;
-
Tutorial 中的第二個方案是基於 Anaconda 的 conda 安裝
conda install -c anaconda vtk
,然而我改了清華源,所以就沒有這個選項了;事實上,直接用conda install vtk
在 3.8.3 版本下會報錯- vtk -> python[version='2.7.*|>=2.7,<2.8.0a0|>=3.6,<3.7.0a0|>=3.7,<3.8.0a0|>=3.5,<3.6.0a0']
於是,回到了 3.5 的 Python 下進行了安裝,成功
-
-
之后就可以愉快安裝 nibabel 包,事實證明自己想的太簡單了
- conda 安裝顯示找不到(至少在清華源下,感覺用了 anaconda 也不會有太大差,之前的經歷告訴我 conda 包似乎不是很全也是我現在轉向 pip 的原因)
- 事實上,官網 https://pypi.org/project/nibabel/ 也是直接用 pip 來安裝的
pip install nibabel
- 然后是 pip,若果你看了我之前的 https://www.cnblogs.com/easonshi/p/12995863.html 這篇文的話,可知我在
.bash_profile
中配置過export ALL_PROXY=socks5://127.0.0.1:1086
給一些常用的命令行工具設置代理,這樣的設置在 base 環境下是 OK 的,默認安裝了 pysocks 包,然而到自建的 Python 下則沒有這個包,所以使用 pip(會調用 ALL_PROXY)會報錯,參看 https://stackoverflow.com/questions/38794015/pythons-requests-missing-dependencies-for-socks-support-when-using-socks5-fro ;一個解決方案是conda install pysocks
安裝 pysocks 包即可; - 不過我對於 conda 有點放棄了,想要嘗試 pip,可以這樣安裝
- 官方的方式 https://pip.pypa.io/en/latest/installing/ 先用 crul
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
把文件下下來,然后python get-pip.py
進行安裝 - 現在想到,或許可以
conda install pip
來安裝?
- 官方的方式 https://pip.pypa.io/en/latest/installing/ 先用 crul
- 另外,中途學到了如何在 Shell 中刪除變量,只需
unset variable_name
即可
-
僅僅是這樣的折騰還算可以,不過讓人吐血的是,在這些都安裝(python=3.5)完成之后,我突發奇想試着用 pip 在 3.8 中安裝 tvk,結果直接成功了,上面的報錯讓人疑惑……
正確的解決方案
所以,事實上若是需要安裝上面的兩個包,解決方案僅僅是在正確配置 pip 的情況下的一行代碼
pip install vtk nibabel
網上似乎也有說混用 pip 和 conda 可能存在一些問題,當然我這里遇到的是應該不能算是沖突,只能說明 conda 的一些問題:1. 包庫不全;2. 安裝慢。不過也需要過用 pip 安裝的包在 conda 下無法卸載的情況,不知道是不是一種表現。(卸載命令 pip uninstall package_name
)
下面是一些參考文檔
- https://vtk.org/documentation/ VTK 的官方 document
- https://nipy.org/nibabel/manual.html 這里有 nibabel 的 manual #慢慢看吧
關於配置 pip 和 conda 的源
就這樣結束的話太短了,復制一下之前寫的內容吧~
- 配置 conda 的話可以在 Terminal 輸入下面兩條命令添加源:
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --set show_channel_urls yes
當然也可以直接修改 ~/.condarc
文件
channels:
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
- defaults
show_channel_urls: true
conda doc: Using the .condarc conda configuration file
- 配置 pip 需要新建
~/.pip/pip.conf
,例如豆瓣源:
[global]
index-url = http://pypi.douban.com/simple
[install]
trusted-host=pypi.douban.com
其他的國內源包括
阿里雲 :http://mirrors.aliyun.com/pypi/simple/
中國科學技術大學:https://pypi.mirrors.ustc.edu.cn/simple/
清華大學:https://pypi.tuna.tsinghua.edu.cn/simple/
豆瓣:http://pypi.douban.com/simple