叨一叨 pip 和 conda:一場由安裝 VTK 和 nibabel 引發的血案


磕磕絆絆用到現在,最近又發現了 conda 的一個大坑,決定跳回 pip 的懷抱,在此記錄一下心路歷程。注意有大量的冗余信息,不給過讀下來應該對 pip 的理解還是有助益的,若僅需要安裝上面兩個包的話直接 pip 即可,前提是正確配置😝

  • 之后的打算,只把 conda 用做簡單的 VirtualEnvironment 管理工具,package 管理只用 pip。

涉及的問題有:

  1. 如何安裝 pip
  2. 關於全局代理 ALL_PROXY 和 Python
  3. 安裝 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 來安裝?
    • 另外,中途學到了如何在 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

下面是一些參考文檔

關於配置 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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM