从黑暗走向光明:Python包安装进阶之路

想当初刚学习Python的时候,就会用书本里面自带的一些package,用sysos也用得很开心。后来接触到biopython项目,发现原来Python有这么不同功能的包,简直琳琅满目。不过这也是我痛苦的开始,在服务器上装个包怎么那么费劲呢,缺这少那的。

为了一个包的安装,我得花多少时间啊,还能不能让人好好做科研了。

  • 黑暗时代

最开始的时候是从源码开始安装,一般 python setup.py install就执行安装过程了,不过可怕的这些包之间的依赖关系。而且安装的时候,要选择安装目录。对于刚开始学习的我,都要搞晕了。后来还看到一个叫 easy_install,可以自动解析package之间的依赖关系,生产效率感觉提上去了。不过经常出错,虽然比手动安装好多了,使用起来还是挺费劲的。

  • 迎来曙光

不知道当时从哪里看到说用 pip会更好,看来没事上上网还是挺有好处的。而且比 easy_install什么的不知道高到哪里去了,具体差异可以看:

pip vs easyinstall

https://packaging.python.org/pipeasy_install/

why use pip over easy_install

https://stackoverflow.com/questions/3220404/why-use-pip-over-easy-install

上面的链接都说得很详细了。对于一般的需求, pip install --user <package>就已经很受用了。如果再使用上豆瓣上的PyPi源,那使用体验简直不能太好。

# Linux/Mac用户修改# $HOME/.config/pip/pip.conf[global]timeout = 60index-url = https://pypi.doubanio.com/simple## 注意: 如果使用http链接,需要指定trusted-host参数[global]timeout = 60index-url = http://pypi.douban.com/simpletrusted-host = pypi.douban.com

常用的pip用法一般有:

# 在用户目录安装软件,不需要root 权限pip install --user <package># 搜索packagepip search biopython# 安装特定版本的package,版本号可以从search的结果中找到pip install biopython=1.69# 卸载packagepip uninstall biopython# 导出已安装的包信息pip freeze > requirements.txt# 其他使用方法可以参考pip的帮助说明pip -h
  • 发现virtualenv

如果你只是测试,或者电脑上同一个package安装了好几个版本,那么你一定会喜欢 virtualenv。有了它,现在可以在电脑上安装不同版本的package了。使用方法也很简单,因为 virtualenv也是Python包,可以直接用 pip来进行安装。现在可以用它在电脑上创建不同的虚拟环境了,各个虚拟环境互不干扰,而且对原有的环境不会造成影响,哪天不想玩了,直接把对应的目录删掉就可以了,非常方便 。

# 安装virtualenvpip install --user virtualenv# 创建一个新的环境mkdir my_envs cd my_envs# 创建一个env_test目录,把相关的package安装到该目录下virtualenv env_test# 如果系统上有多个python版本,可以通过参数来指定对应的python版本virtualenv -p /usr/bin/python2.7 env2.7# 激活虚拟环境,需要提供具体的虚拟环境安装目录source env2.7/bin/activate# 激活后就可以在终端中看到有对应提示,如果想关闭也很简单deactivate

上面的都一些基本的用法,如果创建的虚拟环境比较多,可以借助 virtualenvwrapper来进行管理,更多的信息可以参考Python虚拟环境:http://pythonguidecn.readthedocs.io/zh/latest/dev/virtualenvs.html。

  • 大杀器anaconda

当时在学习virtualenv的时候,也发现anaconda这个东西,不过当时觉得软件太多,而且比较臃肿,对我这种没装几个软件的来说,virtualenv已经够用了。直到有一天我需要安装tensorflow的时候,才发现这东西有多方便。不仅帮你解决依赖关系,而且还会帮你把相关的系统依赖也解决了。相信大家在安装软件的时候,没少遇到missing 什么 libxxxx.so什么的信息。有的时候为了安装这些系统依赖,真的能把人搞疯。anaconda不仅能解决这些问题,还可以安装R里面package啊, 虽然我没用过这个功能。现在除了anaconda,还有精简的miniconda和专门为生物信息准备的bioconda,虽然名字不一样,只是默认安装时带的package不一样而已,使用方法没什么区别。下面简单说明下bioconda的使用:

# 首先需要安装conda,我们下载minicoda,文件比较小,下载过程比较快wget https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.shbash Miniconda3-latest-Linux-x86_64.sh

这样在你的 $HOME目录里面有一个miniconda,保存安装的软件使用,而且自动在环境变量配置文件 .bashrc添加新的变量设置。安装之后可以自己检查一下,是不是有新的不一样的东西。你需要要重新登录一下或者重新加载环境变量 source ~/.bashrc。因为网络环境问题,最好修改一下安装软件源,可以使用清华anaconda开源镜像源 https://mirror.tuna.tsinghua.edu.cn/help/anaconda/

# 请注意一上顺序哈conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/conda config --add channels defaultsconda config --add channels rconda config --add channels bioconda

目前清华源没有bioconda的镜像,大家可以到https://github.com/tuna/issues/issues/112这里提一下需求。简单的使用过程可以参考bioconda的文档 https://bioconda.github.io/上的说明,下面说一下对经常用的几个命令

# 搜索特定软件包conda search package-name  # 新建一个叫py3的环境,这个环境里面我们需要指定使用python3 conda create -n py3 python=3.5.3# 激活虚拟环境 source activate py3   # 关闭虚拟环境source deactivate  # 列出已经创建的虚拟环境  conda info --evns
  • 参考
  1. pip使用豆瓣源 http://www.cnblogs.com/ZhangRuoXu/p/6370107.html
  2. Python虚拟环境 http://pythonguidecn.readthedocs.io/zh/latest/dev/virtualenvs.html

编辑:思考问题的熊

原文发布于微信公众号 - 生信技能树(biotrainee)

原文发表时间:2017-06-14

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Java成长之路

解决session共享问题方式调研

为了提高服务器性能,最近公司项目采用了分布式服务集群的部署方式。所谓集群,就是让一组计算机服务器协同工作,解决大并发,大数据量瓶颈问题。项目使用nginx做负载...

681
来自专栏微信公众号:Java团长

分布式之数据库和缓存双写一致性方案解析

首先,缓存由于其高并发和高性能的特性,已经在项目中被广泛使用。在读取缓存方面,大家没啥疑问,都是按照下图的流程来进行业务操作。

742
来自专栏zaking's

走近webpack(5)--devtool及babel的使用

  这一章咱们来说一下如何使用babel以及如何用webpack调试代码。这是基础篇的最后一章,这些文章只是罗列的给大家讲解了在一些场景中webpack怎样使用...

2937
来自专栏前端杂货铺

XSS分析及预防

XSS(Cross Site Scripting),又称跨站脚本,XSS的重点不在于跨站点,而是在于脚本的执行。在WEB前端应用日益发展的今天,XSS漏洞尤其容...

3097
来自专栏主机笔记

安装cloudready把老电脑变成一台chromebook

Chromebook是Google推出的网络笔记本,整个系统相当于一个独立的chrome浏览器,可以实现大部分的功能,只有chrome浏览器也节省了很多不必要的...

50311
来自专栏智能合约

PhalconCMS源码解析之多模块

961
来自专栏24K纯开源

macOS下加载动态库dylib报"code signature invalid"错误的解决办法

一、现象描述       在macOS上搞开发也有一段时间了,也积攒了一定的经验。然而,今天在替换工程中的一个动态库时还是碰到了一个问题。原来工程中用的是一个静...

1985
来自专栏Java技术

分布式之数据库和缓存双写一致性方案解析!

首先,缓存由于其高并发和高性能的特性,已经在项目中被广泛使用。在读取缓存方面,大家没啥疑问,都是按照下图的流程来进行业务操作:

973
来自专栏云霄雨霁

数据库事务总结

1506
来自专栏Linyb极客之路

分布式之数据库和缓存双写一致性方案解析

首先,缓存由于其高并发和高性能的特性,已经在项目中被广泛使用。在读取缓存方面,大家没啥疑问,都是按照下图的流程来进行业务操作。

601

扫码关注云+社区