叨一叨 pip 和 conda:一场由安装 VTK 和 nibabel 引发的血案
磕磕绊绊用到现在,最近又发现了 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