最近在服务器上需要用到一个新版本的python包,由于服务器是公用的,所以先将其安装到自己的工作目录下。
更新:
可以直接用pip install scikit-image==0.12.3 -t DIR
安装指定版本的scikit-image到指定DIR目录(期间如果DIR中没有相应的依赖包,这些依赖包也会被安装。),-t参数指定的目录就是该python包直接所在的目录,而不像–prefix所指定的那样。至于网络和包导入路径请自行设置,可以参考下面的内容,也可以留言询问。(用–prefix指定的是环境路径,即一个python环境的父目录,官方文档的解释就就是Installation prefix where lib, bin and other top-level folders are placed. python包通常最终会被安装到lib目录下的site-packages下,期间如果需要依赖一些库的话就会在–prefix指定的环境下检查是否存在一些库。如果不存在就会下载、编译这些库,放到这个环境下的相应位置。如果直接用-t指定包的安装位置而不用–prefix的话,我估计检查其它库的依赖等操作会以默认的目录环境进行检查和更新,只是变了python包的最终安装目录而已。)
下面的内容是我以前用的一种方法,是pip的本地源码安装方式。
本次安装以scikit-image的v0.12.x版本为例。
(注意:在后面的命令中,两个短横(长这样 – )和一个短横(长这样 - )很像,但是会比短横稍微长一点。千万不要混淆0.0…)
先到scikit-image的github上将分支选为v0.12.x(master是正在开发的分支,不推荐使用),然后点右边的download ZIP按钮获得压缩包。(也可以直接wget)
将压缩包解压到合适的目录,比如我的就是~/workingdir也就是$HOME/workingdir
进入源目录(如:~/workingdir/scikit-image-v0.12.x),在里面执行命令:(如果服务器上原来就在其它目录安装过这个包,那就加上–ignore-installed)
pip install . –install-option=”–prefix=YourAddress” –ignore-installed
(e.g. pip install . –install-option=”–prefix=$HOME/workingdir” –ignore-installed)
这个过程需要联网下载一些东西,像我所在的服务器是不能直接上外网的,这时需要配置代理服务器(这个代理服务器的IP可以问问自己的服务器管理员)来联网。配置方法网上有很多,我推荐一个只针对单个登录用户的方法http://easwy.com/blog/archives/proxy-setting-on-linux-console/(注意,有时你还需要设置https_proxy)
安装完之后会在你所指定的目录下产生一个lib文件夹,一般python的包都会安装在lib/python2.7/site-packages/目录下,将这个目录添加到PYTHONPATH中。推荐参考
http://blog.csdn.net/shmilyringpull/article/details/8560606
如果服务器上在其它目录下安装过这个包,那需要确保python解释器先找到的lib是你的现在这个lib而不是原来那个lib。这只需要知道python解释器搜索路径的顺序就行了,先是搜索当前工作目录,然后是环境变量PYTHONPATH,再是sys.path指定的目录。
ps: 如果有权限在默认路径改动的话,直接pip install scikit-image即可
或者只是更新 pip install scikit-image –upgrade
注意了!!,由于前面要是用了–ignore-installed的话,它就会不管你服务器上原来有什么包,把scikit-image以及它的依赖包统统安装一遍,这其中就有numpy包,这个包貌似还需要配置一下和MKL的链接,比较麻烦,我是没时间去学,我的做法是删掉这个新安装的numpy包,让python解释器去找原来已经配置好的那个numpy包。