Python安装、版本管理、虚拟环境
     分类:Python系统管理     有: 0 条评论

Python安装、版本管理、虚拟环境

     分类:Python系统管理     有: 0 条评论

集成环境Anaconda

https://www.anaconda.com/download/


包管理器安装

Centos

一般情况下yum源有更新都是可以直接升级到新版的,在yum源无新版时一般采用源码编译。

更新python千万不要把老版本的删除!新老版本是可以共存的,很多基本的命令、软件包都要依赖预装的老版本python的,比如yum。

yum install -y https://centos7.iuscommunity.org/ius-release.rpm
yum update
yum install -y python35u python35u-libs python35u-devel python35u-pip
或
yum install -y python36u python36u-libs python36u-devel python36u-pip

安装完成后无法直接运行python3和pip3的;要做软链接;which一下python3.6或python36,看看在那个目录。最好链接为python3和pip3;而不是python和pip(centos系统很多系统服务依赖python2,无法在python3中运行)


Ubuntu、Debian、Deepin

sudo apt-get install -y python3-dev build-essential libssl-dev libffi-dev libxml2 libxml2-dev libxslt1-dev zlib1g-dev libcurl4-openssl-dev
sudo apt-get install -y python3 python3-pip

Mac

Mac中建议使用Anaconda;python环境特别混乱;Homebrew、xcode、Anaconda、源码编译,四者安装的路径完全不一样,非常混乱;建议只使用Anaconda,其他不理会或尽量卸载。

# 安装Homebrew
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

# 安装python3
brew install python3

参考:https://germey.gitbooks.io/python3webspider/content/1.1-Python3%E7%9A%84%E5%AE%89%E8%A3%85.html



源码安装

安装python3

源码包下载:http://python.org/ftp/python/

yum -y install gcc bzip2
wget http://python.org/ftp/python/3.6.5/Python-3.6.5.taz 
tar zxvf Python-3.6.5.tgz
cd Python-3.6.5
./configure
make all 
make install 
make clean 
make distclean 
/usr/local/bin/python3 -V

这时python3安装好了,但需要输入python3才能运行。
替换旧版本(这里的旧版本是2.7的)

#mv /usr/bin/python /usr/bin/python2.7
rm /usr/bin/python
#当前python的版本为2.7所以是python2.7 ,看/usr/bin/下版本是多少。
ln -s /usr/local/bin/python3 /usr/bin/python  
#这里python3.6.5也一样,安装多少版就写多少
python -V   #查看当前默认python版本 

映射关系/usr/bin/python2.7 -->/usr/bin/python2-->/usr/bin/python(升级python3时删除/usr/bin/python链接,建立python3链接就行了;python2还是可以用的)

yum修改
默认的python成功指向3.6.5但此时yum不能用了,还要修改一下文件

vim /usr/bin/yum
修改头部的#!/usr/bin/python2    (改为之前的老版本号)

vim /usr/libexec/urlgrabber-ext-down
修改头部为#! /usr/bin/python2

保存退出,yum即可正常使用。如若有其他命令、软件不能正常使用,仿照yum配置文件的修改方法,修改其配置文件即可。


安装setuptools

# 官网(用最新版本):http://www.zlib.net
wget http://zlib.net/zlib-1.2.11.tar.gz
tar -xvf zlib-1.2.11.tar.gz
cd zlib-1.2.8
./configure
make
make install

然后源码编译重新安装一次Python3;


# 历史版本:https://pypi.python.org/pypi/setuptools
wget --no-check-certificate https://pypi.python.org/packages/6c/54/f7e9cea6897636a04e74c3954f0d8335cc38f7d01e27eec98026b049a300/setuptools-38.5.1.zip#md5=1705ae74b04d1637f604c336bb565720
unzip setuptools-38.5.1.zip
cd setuptools-38.5.1
python setup.py build
python setup.py install

安装pip

#历史版本:https://github.com/pypa/pip/releases
wget --no-check-certificate https://github.com/pypa/pip/archive/10.0.1.tar.gz

#注意:wget获取https的时候要加上:--no-check-certificate
tar zvxf 10.0.1.tar.gz
cd pip-10.0.1/
python setup.py install    #如果上一步安装了setuptools,此步骤为:python2 setup.py install
pip3 -V                    #注意和python2的pip区分开了,如果有python2的pip,这里要软链接为pip3

OK,安装好pip了,接着就可以使用pip了,**如果重装了python,pip也要重装一次。**

#升级pip到最新版本
pip3 install --upgrade pip

如果安装报错:ImportError: No module named 'setuptools'
就先安装setuptools,一般可以直接用yum或apt-get安装,无法安装时下载源码安装


虚拟环境

可以先看看:一篇文章讲清楚Python虚拟环境

使用anaconda3

在新电脑上先安装好anaconda3。
此时python被链接到了anaconda3上,可以删除软链接,保留python2

pip3 install virtualenv
pip3 install virtualenvwrapper
sudo ln -s ~/anaconda3/bin/python3 /usr/bin/
sudo ln -s ~/anaconda3/bin/pip3 /usr/bin/
sudo ln -s ~/anaconda3/bin/pipenv /usr/bin/
sudo ln -s ~/anaconda3/bin/virtualenv /usr/bin/
sudo ln -s ~/anaconda3/bin/virtualenv-clone /usr/bin/
sudo ln -s ~/anaconda3/bin/virtualenvwrapper.sh /usr/local/bin/

sudo vim ~/anaconda3/bin/virtualenvwrapper.sh
搜索python,全部修改为python3;;因为默认python是python2

mkdir -p ~/git_data/virt_env
vim ~/.zshrc 或 vim ~/.bashrc  追加以下路径(大部分命令在这个路径下)
export WORKON_HOME=~/git_data/virt_env

# 以下命令顺序不能换
source ~/.zshrc
source /usr/local/bin/virtualenvwrapper.sh

# 完成,可以使用 mkvirtualenv 命令了。

######################################################
# 注意:
# 我使用了anaconda3,检查环境变量
vim ~/.zshrc 或 vim ~/.bashrc  追加以下路径(大部分命令在这个路径下)
第二行加入路径$HOME/anaconda3/bin
source ~/.zshrc
source ~/.bashrc

# 以下下为次选方法(不是很推荐)
搜索virtualenvwrapper.sh找到真实的路径
如果是Mac系统,又使用了oh-my-zsh
vim $HOME/anaconda3/bin/virtualenvwrapper.sh
编辑48行左右,注释掉其他的,改为下面的
VIRTUALENVWRAPPER_PYTHON="$(command \which python3)"
# 同理,更改
58行:VIRTUALENVWRAPPER_VIRTUALENV="virtualenv"
64行:VIRTUALENVWRAPPER_VIRTUALENV_CLONE="virtualenv-clone"

vim ~/.zshrc 或 vim ~/.bashrc  追加以下两行
export WORKON_HOME=$HOME/git_data/virt-env   #这里我指定了工作路径
source $HOME/anaconda3/bin/virtualenvwrapper.sh

source ~/.zshrc
source ~/.bashrc

手动安装

python3中自带了virtualenv包;python2需要用pip安装。
使用自带的命令管理虚拟环境会比较麻烦,推荐使用virtualenvwrapper来方便管理多个环境。

pip3 install virtualenv         #安装虚拟环境
pip3 install virtualenvwrapper  #安装了这个包才可以使用workon命令,虚拟环境管理工具

安装好了,你可以在你的.bashrc或者.zshrc配置virtualenvwrapper,配置如下。
export WORKON_HOME=$HOME/.virtualenvs  # 指定存放目录
export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3  #指定python3路径
export VIRTUALENVWRAPPER_VIRTUALENV_ARGS='--no-site-packages' # 隔离系统site-packages 
export PIP_VIRTUALENV_BASE=$WORKON_HOME
export PIP_RESPECT_VIRTUALENV=true
if [[ -r /usr/local/bin/virtualenvwrapper.sh ]]; then
    source /usr/local/bin/virtualenvwrapper.sh
else
    echo "WARNING: Can't find virtualenvwrapper.sh"
fi

然后重启终端,会创建一些文件,再次重启就可以正常使用了。

mkvirtualenv [虚拟环境名]         #快速创建环境
deactivate                      #退出虚拟环境
workon                          #查看现有虚拟环境
workon [虚拟环境名]               #进入虚拟环境

报错:Virtualenv: workon command not found参考:https://stackoverflow.com/questions/21928555/virtualenv-workon-command-not-found



各种报错

使用pip安装包提示TLS证书错误

https://blog.csdn.net/nunchakushuang/article/details/80049528


MAC下安装pycurl报错

https://blog.csdn.net/zhangchilei/article/details/54347196


E: Sub-process /usr/bin/dpkg returned an error code (1)

debian系的系统;将python2.7升级到python3.3时,只是将/usr/local/bin目录下修改了(使用ln -s 或者其他),然而我们的配置目录并没有修改;会导致运行一些脚本或安装某些库出现错误,

dpkg: 处理软件包 python-setuptools (--configure)时出错:
 子进程 已安装 post-installation 脚本 返回错误状态 1

解决:
dpkg -C 
apt-get clean
apt-get update
apt-get install --reinstall python-minimal python-lockfile

参考:https://www.cnblogs.com/gongxijun/p/5823595.html

(●゚ω゚●)