其他
拒绝conda, 用virtualenv构建多版本的python开发环境
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
.