拒绝conda, 用virtualenv构建多版本的python开发环境
本文章转载自公众号 “生信码农笔记(ID:bio-coder)”,已获得原作者授权。
1. 不喜欢用 conda
特别不喜欢 bioconda
, miniconda
, Anaconda
这一类的号称安装包与环境管理系统,尤其不喜欢安装在服务器上。因为后面安装其他软件的时候很可能就会因为 conda
中的某个软件包而影响整个系统的环境。用起来一时爽,但出问题了很可能就找不到神马原因了。所以我一直不喜欢 conda
软件。但是平时开发仍然需要 python3
,那怎么办呢?这里我用 virtualenv
来构建多个版本的 python
开发环境。所用的系统如下:
sw_vers
python --version
## ProductName: Mac OS X
## ProductVersion: 10.14
## BuildVersion: 18A391
## Python 2.7.10
我的系统默认自带的 python
是 2.7.10
, 我先再安装个 python3
版本。
2. 安装 python3
这里我用源码安装的方法。首先下载安装包,记得找镜像源,《配置好各种镜像源,安装速度快过你单身十几年的手速,拒绝龟速》,然后再进行自定义安装。
wget https://npm.taobao.org/mirrors/python/3.7.5/Python-3.7.5.tgz
tar -zxf Python-3.7.5.tgz
cd Python-3.7.5
#查看 README.rst
#less README.rst
#查看配置帮助
#./configure -h | less
#这里我将 python3.7.5 安装在/Volumes/LaCie/software/python/3.7.5中
#mkdir -p /Volumes/LaCie/software/python/3.7.5
./configure --prefix=/Volumes/LaCie/software/python/3.7.5/ --with-openssl=/usr/local/opt/openssl
make && make install
源码安装的一个好处就是,你可以自定义安装到指定的文件夹下,当然需要注意源码安装 python
会出现一些依赖库没有安装上,如openssl
, tkinter
, bz2
等,这些库可以用 root
来安装在默认路径下。当然如果你有 root
权限,你也可以用 root
去安装 python3
。
# on Ubuntu
sudo apt-get install python3 python3-dev
3. 安装 virtualenv 包
安装 virtualenv
包时,还是得用 root
安装,你可以指定镜像源。
sudo pip install -i https://pypi.tuna.tsinghua.edu.cn/simple virtualenv
4. 构建多个 python 版本的开发环境
# for python2.7.10
virtualenv -p /usr/bin/python --system-site-packages /Volumes/LaCie/software/pyenv/2.7.10
# for python3.7.5
virtualenv -p /Volumes/LaCie/software/python/3.7.5/bin/python3 /Volumes/LaCie/software/pyenv/3.7.5/
mkdir -p /Volumes/LaCie/software/pyenv/3.7.5/include
ln -s /Volumes/LaCie/software/python/3.7.5/include /Volumes/LaCie/software/pyenv/3.7.5/include/python3.7
其中 -p
用来指定 python
版本,--system-site-packages
表示是否在虚拟环境中安装系统原来就有的 python
包, 默认为 false
。
5. 快捷 active
#vi ~/.bashrc
#添加如下信息进去
alias 'py3env=. /Volumes/LaCie/software/pyenv/3.7.5/bin/activate'
alias 'py2env=. /Volumes/LaCie/software/pyenv/2.7.10/bin/activate'
#保存退出
source ~/.bashrc
#然后就可以使用
py3env
#or
py2env
#来快速激活
6. 测试
可以使用如下操作来进行测试。
py3env
python --version
deactive
py2env
python --version
deactive
7. 安装第三方包
只要激活进入相应版本的 python
环境中后,安装第三方包基本跟原来安装方式一样,可以用 pip
安装或者下载源码包再用 python setup.py install
。
# example
. /Volumes/LaCie/software/pyenv/3.7.5/bin/activate
python --version
pip install numpy pandas scipy
## Python 3.7.5
## Looking in indexes: https://pypi.tuna.tsinghua.edu.cn/simple
## Requirement already satisfied: numpy in /Volumes/LaCie/software/pyenv/3.7.5/lib/python3.7/site-packages (1.18.1)
## Requirement already satisfied: pandas in /Volumes/LaCie/software/pyenv/3.7.5/lib/python3.7/site-packages (1.0.1)
## Requirement already satisfied: scipy in /Volumes/LaCie/software/pyenv/3.7.5/lib/python3.7/site-packages (1.4.1)
## Requirement already satisfied: pytz>=2017.2 in /Volumes/LaCie/software/pyenv/3.7.5/lib/python3.7/site-packages (from pandas) (2019.3)
## Requirement already satisfied: python-dateutil>=2.6.1 in /Volumes/LaCie/software/pyenv/3.7.5/lib/python3.7/site-packages (from pandas) (2.8.1)
## Requirement already satisfied: six>=1.5 in /Volumes/LaCie/software/pyenv/3.7.5/lib/python3.7/site-packages (from python-dateutil>=2.6.1->pandas) (1.14.0)
友情提醒,如果需要在 shell
中使用激活环境,建议将上面的激活写到 bash
脚本中,因为 bash
无法识别 alias
。
往期精彩:
本文分享自微信公众号 - 生信科技爱好者(bioitee)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。