查看原文
其他

拒绝conda, 用virtualenv构建多版本的python开发环境

biocoder BT开发者 2022-09-20

1. 不喜欢用conda

特别不喜欢biocondaminicondaAnaconda这一类的号称安装包与环境管理系统,尤其不喜欢安装在服务器上。因为后面安装其他软件的时候很可能就会因为conda中的某个软件包而影响整个系统的环境。用起来一时爽,但出问题了很可能就找不到神马原因了。所以我一直不喜欢conda这种软件。但是平时开发仍然需要python3,那怎么办呢?这里我用virtualenv来构建多个版本的python开发环境。所用的系统如下

sw_vers
python --version
## ProductName: Mac OS X
## ProductVersion: 10.14
## BuildVersion: 18A391
## Python 2.7.10
我的系统默认自带的python2.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可能会出现一些依赖库没有安装上,如openssltkinterbz2等,这些库可以用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.

往期博文



您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存