[关闭]
@code33 2017-05-22T04:56:06.000000Z 字数 5901 阅读 917

Python 手札 1.2.2

技术文档 python

create by Jyo
modify on 2017-02-05

CentOS 安装Shadowsocks python版

简要介绍一下Pip的用法(以安装Shadowsocks举例):
1、安装package
pip install shadowsocks
2、列出已安装的packages
pip freeze
3、安装特定版本的package
pip install shadowsocks=1.3.3′
pip install shadowsocks>1.0,<1.3.3′
4、升级已安装的package到最新版本
pip install -U shadowsocks
5、卸载已安装的package
pip uninstall shadowsocks
6、查询已安装的package
pip search “shadowsocks”

安装Pip之前必须要先安装setuptools,安装setuptools之前,必须要安装了Python,这之间的安装过程存在依赖关系,缺一不可。因此,整个过程还是比较麻烦的。
1、 检查Python版本
python –version
CentOS6.5默认安装的Python版本是2.6.6,返回值为:Python 2.6.6
2、 安装setuptools
yum install -y python-setuptools
安装完毕后,easy_install命令就可以使用了。
3、 安装pip
easy_install pip

linux下运行命令
vi ~/.pip/pip.conf
然后写入如下内容并保存

  1. [global]
  2. trusted-host = mirrors.aliyun.com
  3. index-url = http://mirrors.aliyun.com/pypi/simple

通过easy_install安装pip是最为简单的方法。pip默认安装到/usr/bin目录下。
4、 安装shadowsocks
pip install shadowsocks

5、 设置SS配置脚本


更新CentOS源

  1. wget http://mirrors.163.com/.help/CentOS6-Base-163.repo
  2. cd /etc/yum.repos.d/
  3. mv CentOS-Base.repo CentOS-Base.repo.bak
  4. mv CentOS6-Base-163.repo CentOS-Base.repo
  1. yum clean all
  2. yum makecache
  3. yum update

pyenv 安装 & 大陆镜像源

类库组件依赖

  1. sudo apt-get install -y make build-essential libssl-dev zlib1g-dev libbz2-dev \
  2. libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev libncursesw5-dev xz-utils

这里注意.bash_profile 和 .bashrc之间的先后顺序
先设置环境变量 ~/.bash_profile 或者 ~/.bash_rc
若~/.bashrc 中有预先装载 执行~/.bash_profile的话 我一般都将环境变量写在 ~/.bash_profile

~/.bash_profile:

  1. export PYENV_ROOT=/home/urname/.pyenv
  2. export PATH=$PYENV_ROOT/bin:$PATH

使之生效

  1. source ~/.bash_profile

下载pyenv的源码

  1. git clone https://coding.net/u/code33/p/pyenv/git ~/.pyenv ${PYENV_ROOT}

~/.bashrc:

  1. eval "$(pyenv init -)"

使之生效

  1. source ~/.bashrc

试一试

  1. pyenv version
  2. pyenv versions

更多方法自己参考help

国内镜像服务器:

  1. http://mirrors.sohu.com/python/

pyenv搜狐镜像源加速:http://mirrors.sohu.com/python/
下载需要的版本放到${PYENV_ROOT}/cache文件夹下面
然后执行 pyenv install 版本号 安装对应的python版本
傻瓜式脚本如下,其中v表示要下载的版本号

  1. export PYTHONVERSION=3.5.2 && wget http://mirrors.sohu.com/python/${PYTHONVERSION}/Python-${PYTHONVERSION}.tar.xz -P ${PYENV_ROOT}/cache/;pyenv install ${PYTHONVERSION}

其实这货也可以添加进环境变量文件 ~/.bash_profile

  1. export PYTHON_BUILD_MIRROR_URL="http://mirrors.sohu.com/python/"

virtualenv 插件安装

virtualenv 是pyenv工具的一个插件,用以各不同项目间的包环境隔离区分

大陆传送门:
https://coding.net/u/code33/p/virtualenv/git

  1. git clone https://coding.net/u/code33/p/virtualenv/git ${PYENV_ROOT}/plugins/pyenv-virtualenv

下载好项目以后再添加自动运行脚本
~/.bashrc

  1. eval "$(pyenv virtualenv-init -)"

virtualenv使用说明

假设pyenv已经安装好了2.7.11这个版本

  1. pyenv virtualenv 2.7.11 project_envname0
  2. pyenv local(this is pyenv shell) project_envname0
  3. pyenv virtualenv 2.7.11 project_envname1
  4. pyenv local project_envname1

查看virtualenv生效状态

  1. pyenv virtualenvs

激活某个项目环境

  1. pyenv local someone_project_envname

然后再检查激活状态

  1. pyenv virtualenvs

可以看到结果

  1. $ pyenv virtualenvs
  2. 3.5.1/envs/aiohttp-virtual-env (created from /home/adrdev/env/.pyenv/versions/3.5.1)
  3. 3.5.1/envs/pjmana-venv (created from /home/adrdev/env/.pyenv/versions/3.5.1)
  4. 3.5.1/envs/spd-mana (created from /home/adrdev/env/.pyenv/versions/3.5.1)
  5. aiohttp-virtual-env (created from /home/adrdev/env/.pyenv/versions/3.5.1)
  6. * pjmana-venv (created from /home/adrdev/env/.pyenv/versions/3.5.1)
  7. spd-mana (created from /home/adrdev/env/.pyenv/versions/3.5.1)
  8. (pjmana-venv)

这样就可以在该项目环境下管理只属于该环境的pip包

  1. pip list

PIP 及常用包使用

项目文件包list管理

导出当前virtualenv环境的pip list

  1. pip freeze > pip-list.info

例子.查看一下导出的pip清单,如下

click==6.7
DateTime==4.1.1
Flask==0.12
itsdangerous==0.24
Jinja2==2.9.5
MarkupSafe==0.23
psycopg2==2.6.2
pytz==2016.10
PyYAML==3.12
SQLAlchemy==1.1.5
Werkzeug==0.11.15
zope.interface==4.3.3

根据pip-list文件安装依赖包:

  1. pip install -r pip-list.info

wget
一个下载用的工具类

  1. pip install wget

pyyaml
Yaml文件格式解析类库

  1. pip install pyyaml

datetime
日期时间处理类库

  http://strftime.org/

example:

  1. _arrdateTime=datetime.datetime.strptime(arrdateStr,'%Y-%m-%d %H:%M:%S.%f')

CentOS6.x python2.7.12

python2.6.x 很多应用都无法支持了,比如SSServer

从官网下载2.7.12

  1. wget https://www.python.org/ftp/python/2.7.12/Python-2.7.12.tar.xz

从七牛下载

  1. http://xyzsetup.dlhis.com/Python-2.7.12.tar.xz

解压

  1. tar xvJf Python-2.7.12.tar.xz

安装一些必备组件,防止编译所需依赖出错

  1. yum install openssl-devel

再装

  1. yum install pcre-devel zlib unzip git

然后 后面照着这些教程走应该就可以了:
http://blog.csdn.net/jcjc918/article/details/11022345

Ubuntu14.04 Server python2.7.x 安装

手动添加源

  1. add-apt-repository ppa:fkrull/deadsnakes-python2.7

更新源索引

  1. apt-get update

对其执行升级操作

  1. aptitude upgrade

web框架

  1. wget http://webpy.org/static/web.py-0.38.tar.gz

解压并拷贝 web 文件夹到你的应用程序目录下。 或者,为了让所有的应用程序都可以使用,运行:

  1. python setup.py install

更多细节可以参考:
http://webpy.org/install.zh-cn


Python 系统操作命令

python中的命令行参数
python中有一个模块sys,sys.argv这个属性提供了对命令行参数的访问。命令行参数是调用某个程序时除程序名外的其他参数。
sys.argv是命令行参数的列表
len(sys.argv)是命令行参数的个数
下面我们用一个简单的例子来说明一下。

  1. #!/usr/bin/python
  2. #coding:utf-8
  3. import sys ##加载sys这个模块。
  4. for i in range(len(sys.argv)):
  5. print "第%d个参数是:%s" % (i,sys.argv[i])
  6. print

从上面的脚本运行结果我们能看得出来第一个参数是脚本名本身也就是第0个参数。其余的以此类推.
有了这个sys.argv参数我们就可以向脚本传递一些我们想要用的参数。

另一个比较常用的模块os.path可以完成对路径的操作。它提供的函数可以完成管理和操作文件路径中的各个部分,获取文件或子目录信息,文件路径查询操作。
下面列出一些os模块中常用的函数:

函数名: 作用:
os.mkfifo('path/filename')/os.mknod('path/filename',mode,device) 创建命名管道/创建文件系统节点
os.remove('path/filename') 删除文件
os.rename('path/filename1','path/filename2')/renames() 重命名文件
os.stat('path/filename') 返回文件信息
os.symlink('path/filename','path/ln_filename') 创建符号链接
os.utime() 更新时间戳
os.tmpfile() 创建并打开('w+b') 一个新的临时文件
os.walk() 生成一个目录树下的所有文件名

目录/文件夹

os.chdir()/fchdir() 改变当前工作目录/通过一个文件描述符改变当前工作目录
chroot() 改变当前进程的根目录
listdir() 列出指定目录的文件
getcwd()/getcwdu() 返回当前工作目录/功能相同,但返回一个Unicode对象
mkdir()/makedirs() 创建目录/创建多层目录
rmdir()/removedirs() 删除目录/删除多层目录

访问/权限

access() 检验权限模式
chmod() 改变权限模式
chown()/lchown() 改变ower和group ID /功能相同,但不会跟踪链接
umask() 设置默认权限模式

文件描述符操作

open() 底层的操作系统open(对于文件,使用标准的内建open() 函数)
read()/write() 根据文件描述符读取/写入数据
dup()/dup2() 复制文件描述符号/功能相同,但是是复制到一个文件描述符设备号。
makedev() 从major和minor设备号创建一个原始设备号
major() /minor() 从原始设备号获得major/minor设备号

下面是os.path模块中的路径名访问的一些函数

函数描述

os.path.basename()去掉目录路径,返回文件名
os.path.dirname() 去掉文件名,返回目录路径
os.path.join() 将分离的各部分组合成一个路径名
os.path.split() 返回(dirname(),basename())元组
os.path.splitdrive() 返回(dirvename,pathname)元组
os.path.splitext() 返回(filename,extension)元组

信息

getatime() 返回最近访问时间
getctime() 返回文件创建时间
getmtime() 返回最近文件修改时间
getsize() 返回文件大小(以字节为单位)

查询

exists() 指定路径(文件或目录)是否存在
isabs() 指定路径是否为绝对路径
isdir() 指定路径是否存在且为一个目录
isfile() 指定路径是否存在且为一个文件
islink() 指定路径是否存在且为一个符号链接
ismount() 指定路径是否存在且为一个挂载点
samefile() 两个路径名是否指向同一个文件

以上模块和函数在python脚本中经常用到,在这里记录一下。^-^


Thanks God

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注