Linux下python以及虚拟环境virtualenv、virtualenvwrapper的安装

在工作中,本不该遇到python安装的问题,但是笔者还是遇到了。因为接手时的服务器配置混乱,加之长时间的无人管理,就不知道问题的源头了。想删掉重装吧,不能!因为你不知道有多少项目在这台服务器上跑着,更不清楚哪些项目依赖着当前的哪个python版本。由于前人的种种原因吧,没有搭建虚拟环境,没有考虑到python版本所需的依赖包,故而出现了一系列头疼的事情,故此做下笔记。
以下这篇文章讲得就非常全面了,在此做引用声明,以表示对作者的尊重。

参考:https://www.cnblogs.com/freeweb/p/5181764.html

python安装之前需要安装一些必要的依赖模块:

yum -y install zlib zlib-devel
yum -y install bzip2 bzip2-devel
yum -y install ncurses ncurses-devel
yum -y install readline readline-devel
yum -y install openssl openssl-devel
yum -y install openssl-static
yum -y install xz lzma xz-devel
yum -y install sqlite sqlite-devel
yum -y install gdbm gdbm-devel
yum -y install tk tk-devel

如果没有这些模块后来使用会出现一些问题,比如没有openssl则不支持ssl相关的功能,并且pip3在安装模块的时候会直接报错;没有readline则python交互式界面删除键和方向键都无法正常使用,至于需要什么模块在make完之后python会给出提示。
安装上面这些python内置模块基本上就比较全了,如果后续有其他必要的模块,会继续补充的,接下来可以安装python了,编译过程中会自动包含这些依赖.
下载并解压文件:

tar -xzvf Python-3.6.1.tgz -C /usr/local/src/    #src一般用来存放源码目录

进入目录:
cd Python-3.6.1/
配置编译:
./configure --prefix=/usr/local/python3 --enable-shared CFLAGS=-fPIC
编译源码:
make && make install
安装成功之后,安装目录就在/usr/local/python3,然后将python下的bin目录添加到环境变量中,如图所示:

vi  ~/.bashrc 

在最下面添加一行代码:
配置环境变量
因为上面的依赖包是用yum安装而不是自己编译的,所以都是安装在系统默认目录下,因此各种选项不用加默认即可生效。
补充一下:这里加上–enable-shared和-fPIC之后可以将python3的动态链接库编译出来,默认情况编译完lib下面只有python3.xm.a这样的文件,python本身可以正常使用,但是如果编译第三方库需要python接口的比如caffe等,则会报错;所以这里建议按照上面的方式配置,另外如果openssl不使用系统yum安装的,而是使用自己编译的比较新的版本可以使用–with-openssl=/usr/local/openssl这种方式指定,后面目录为openssl实际安装的目录,另外编译完还要将openssl的lib目录加入ld运行时目录中即可.
安装完成之后要简单做一下配置:即将python库路径添加到/etc/ld.so.conf配置中,然后执行ldconfig生效;或者添加到$LD_LIBRARY_PATH中,这样在接下来运行python3是就不会报找不到库文件的错误了.
  系统中原来的python在/usr/bin/目录下,通过ls -l可以看到,python是一个软链接,链接到本目录下的python2.7。可以选择删除软连接,也可以保留,这里选择了保留并创建新的软连接:

cd /usr/bin/
ln -s /usr/local/python3/bin/python3.6.1  python3
ln -s /usr/local/python3/bin/pip3  pip3

测试:命令行输入python3回车即可。
安装完了Python,搭建虚拟环境是很有必要的,因为它很少了很多不必要的问题,并且出了问题也容易定位。另外,你也不想成为那个被吐槽的前任吧…

  1. 虚拟环境:独立的python运行环境
  2. 虚拟环境有助于包的管理以及防止版本冲突

virtualenv安装:

pip install virtualenv

创建虚拟环境:

 virtualenv venv #venv为虚拟环境目录名,目录名自定义

virtualenv venv 将会在当前的目录中创建一个venv的文件夹,包含了Python可执行文件,以及 pip 库的一份拷贝,这样就能安装其他包了。
指定Python解释器:

virtualenv -p /usr/bin/python3 venv    # -p参数指定Python解释器

激活虚拟环境:

扫描二维码关注公众号,回复: 5799042 查看本文章
source venv/bin/activate

退出虚拟环境:

 venv/bin/deactivate

这里virtualenv 有些不便,因为virtual的启动、停止脚本都在特定文件夹,时间长了,很可能会有很多个虚拟环境散落在系统各处,你也可能忘记它们的名字或者位置。

virtualenvwrapper

virtualenvwrapper提供了一系列命令方便与虚拟环境的管理,所以推荐直接使用virtualenvwrapper。

安装virtualenvwrapper依赖于virtualenv,确保virtualenv安装

pip install virtualenvwrapper
pip install virtualenvwrapper-win  #Windows使用该命令

安装完成后,配置环境变量:
可以使用whereis查看virtualenvwrapper.sh的路径:

whereis virtualenvwrapper.sh

在~/.bashrc添加以下内容:

source /usr/local/bin/virtualenvwrapper.sh

virtrualenvwrapper会安装到python的bin目录下,所以该路径是python安装目录下bin/virtualenvwrapper.sh

source ~/.bashrc    #读入配置文件,立即生效

##virtualenvwrapper基本使用
1.创建虚拟环境

mkvirtualenv venv_py3 # venv_py3是虚拟环境名,可以任意指定

默认会在home目录下的.virtualenv文件夹中创建,也可以通过添加环境变量来指定虚拟环境目录的安装位置。

export WORKON_HOME=~/.virtualenv      # virtualenvwrapper存放虚拟环境目录

指定python版本:

mkvirtualenv -p /usr/bin/python3  venv

不指定默认就是当前系统下的python2.7
2. 基本命令  
查看虚拟环境目录

workon

切换到虚拟环境

workon venv

退出虚拟环境

 deactivate

删除虚拟环境

rmvirtualenv venv

3.报错ERROR: virtualenvwrapper could not find virtualenv in your path

#出现这种错误,是因为 virtualenv 这个基础依赖包被安装在默认python目录下,就需要做一个软连接 ln -s;
#查找virtualenv的位置
  sudo find / -name "virtualenv"
  /Library/Frameworks/Python.framework/Versions/3.7/bin/virtualenv
# 最后进行软连接
sudo ln -s /Library/Frameworks/Python.framework/Versions/3.7/bin/virtualenv /usr/local/bin/virtualenv

虚拟环境的迁移:

如果按照上述步骤,进行到此,并没有在环境变量中设置虚拟环境目录,那么默认会在~下的./virtualenv目录中,将其打包迁移至同一目录即可。环境迁移时,最好是两台服务器的环境是一致的,如python安装路径。如果服务器的环境一致,那么以下步骤可以省略:
拷贝迁移至其他服务器下进行解压:

tar -xcvf venv.tar.gz ~/virtualenv/venv

进入~/virtualenv/venv/bin/下修改activate文件中参数:

VIRTUAL_ENV="/home/venv"
export VIRTUAL_ENV

将上述VIRTUAL_ENV修改为当前venv文件夹正确的路径,然后执行:

source activate

查看虚拟环境内的python、pip的路径是否虚拟环境内的python和pip,如果不是,那么还是需要修改其路径。

猜你喜欢

转载自blog.csdn.net/sheqianweilong/article/details/83663641