@zhangyy
2017-08-18T17:04:06.000000Z
字数 4194
阅读 229
Python基础
实验环境:
系统版本: CentOS release 6.5 (Final)
YUM源:http://mirrors.163.com/.help/CentOS6-Base-163.repo (163源)
GIT源:https://github.com/yyuu/pyenv-installer
永远不要破坏系统自带的python环境
项目 | Python版本 |
---|---|
项目A | python2.7 |
项目B | python3.5 |
需求:不同的项目需要不同的python
环境可能这个应用需要包A的1.9版本,另一个应用需要包A的2.0版本,并且为了不破换系统的python版本(导致yum无法使用),采用pyenv
来安装和管理python
环境。
系统自带的是公司的yum源,在这里不想用,在/etc/yum.repos.d 文件夹下使用
rm -rf *
将163的源传到/etc/yum.repos.d下,运行下列命令清空缓存读取新缓存
yum -y clean all
yum -y makecache
安装python的包需要epel源的支持,需要安装epel源
yum -y install epel-release
在清空缓存读取新缓存
yum -y clean all
yum -y makecache
(1) git安装
yum -y install git
(2)编译环境安装
yum -y install gcc make patch
(3)依赖包安装
yum -y install gdbm-devel openssl-devel sqlite-devel readline-devel zlib-devel bzip2-devel
openssl-devel 加密有关,readline-devel 自动补全,zlib/bzip2 包管理
(4)pyenv安装
pyenv是一个bash脚本,通过下面命令运行这个脚本,运行
curl -L https://raw.githubusercontent.com/yyuu/pyenv-installer/master/bin/pyenv-installer | bash
上图提示安装成功,还需要添加运行环境到~/.bash_profile
文件中vim ~/.bash_profile
添加三行到文件中
export PATH="/root/.pyenv/bin:$PATH"
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"
使改变生效
source ~/.bash_profile
运行
pyenv
表示pyenv安装成功
pyenv install 3.5.2 #接版本号,可以TAB出来,需要等一段时间
如果网速过慢。可以先下载好python的包Python-3.5.2.tgz
,放到~/.pyenv/cache
(目录要自己新建)下面,运行上面的命令。
如果你属于早期安装的pyenv
,那么有可能你无法使用最新版的python
,请使用update
更新你的pyenv
pyenv install --list # 查看你所可以安装的python程序版本
pyenv update # 更新pyenv程序
如上图安装完成
(1)pyenv versions
列出所有被pyenv安装的版本
pyenv versions
* system (set by /root/.pyenv/version) #系统版本 *表示当前使用的
3.5.2 #刚安装的版本
(2)pyenv local
pyenv local 3.5.2(版本号) #针对目录使用什么python版本,子目录继承父目录的版本
[root@hx-test02 ane]# pyenv version
3.5.2 (set by /ane/.python-version)
(3)pyenv global
全局设置成3.5.2的环境 绝对不要使用global
pyenv global 3.5.2
两种方式恢复
* pyenv global system
* rm -rf ~/.pyenv/version
(4)pyenv version
当前目录使用的python版本
pyenv version
system (set by /root/.pyenv/version)
基于某个版本创建虚拟环境
目的:包管理,隔离每个项目的第三方包,生产研发时,针对不同项目创建一个虚拟环境
pyenv virtualenv 3.5.2(版本号) django_text_3.5.2(虚拟环境名字)
pyenv local django_text_3.5.2 #使用虚拟环境
(django_text_3.5.2) [root@hx-test02 django]# #前面的提示表示使用成功
虚拟环境产生2个文件,其实django_text_3.5.2只是一个链接文件,方便我们调用
lrwxrwxrwx. 1 root root 50 Jan 10 10:58 django_text_3.5.2 -> /root/.pyenv/versions/3.5.2/envs/django_text_3.5.2
pyenv uninstall django_text_3.5.2 #删除虚拟环境
今天所有的虚拟环境中输入python全部默认进了系统的2.6.6环境,导致所有的服务无法启动,经检查发现是在bashrc里面有人运行了alias命令,添加了python = sudo python,导致所有的命令都默认到系统python下面去了,删除了bashrc下面的alias后,系统恢复,pyenv恢复正常。
在虚拟环境中运行
pip install ipython #pip是python的包管理工具
pip uninstall ipython #删除ipython
pip install ipython==4.2.0
vim ~/.pip/pip.conf
[global]
index-url = http://mirrors.aliyun.com/pypi/simple/ # 更新下载路径,原理类似我们的yum源
trusted-host = mirrors.aliyun.com #表示信任此站点的软件包
# 如果此目录不存在,需要创建
在实验过程中,使用Xshell4,安装5.1.0版本的ipython会出现提示符闪烁的BUG,如果使用Xshell5不会闪烁,也可以安装低版本的ipython解决(4.2.0)。
jupyter notebook
是一个网页版的python编写交互模式,他的功能类似于ipython,但是他使用过程很类似我们使用纸和笔操作,可轻松擦除我们先前写的代码。并且他还可以将我们的编写的代码进行保存记录,用来做笔记以及编写简单代码相当方便。那么下面让我们来看如何安装使用jupyter notebook
pip install jupyter #Successfully installed ......表示安装成功
运行jupyter
jupyter notebook --ip=0.0.0.0 --no-browser
#当前目录的python版本是什么,将使用什么版本的python进行运行
#--ip表示监听的IP地址
#--no-browser 表示不打开浏览器,默认端口8888
http://192.168.7.216:8888/?token=ea347b562df7f63887fa028f33d54ab26c89b8d6a93d7701 访问地址
jupyter密码的配置
运行命令生成notebook的配置文件vim /root/.jupyter/jupyter_notebook_config.py
jupyter notebook --generate-config
在jupyter里面运行
from notebook.auth import passwd
passwd()
输入两次密码得到如下输出
'sha1:67ab0e8ce8e6:dd1a32997d2de2c9283d730867d3861fcda8ba90'
c.NotebookApp.password = u'sha1:67ab0e8ce8e6:dd1a32997d2de2c9283d730867d3861fcda8ba90'
编辑上面生成的配置文件,加上得到的加密文件
重启jupyter,密码就可以使用了。
pycharm分为社区版和专业版,在此演示专业版。
下载链接http://www.jetbrains.com/pycharm/download/#section=windows
File → Settings → Project: mysite4 → Project Interpreter
配置完成后点OK,需要一段时间同服务器同步。
Tools → Deployment → Configuration...
选择SFTP模式
配置相应参数
代码自动上传
Tools → Deployment → Automatic Upload(always)
Browser Remote Host,同远端服务器同步,同步完成后可以做代码对比(Compare with ......)
如上设置后,运行django的实例会发现启动不了,看启动报错是
django在远端启动本地的代码,这样启动不了。
Run --> Edit Configurations... -->Django server (mysite4)
添加参数可以解决
但后来发现添加了代码共享同步后也可以解决(即第3步)