@code33
2017-05-22T04:56:06.000000Z
字数 5901
阅读 917
技术文档
python
create by Jyo
modify on 2017-02-05
简要介绍一下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
然后写入如下内容并保存
[global]
trusted-host = mirrors.aliyun.com
index-url = http://mirrors.aliyun.com/pypi/simple
通过easy_install安装pip是最为简单的方法。pip默认安装到/usr/bin目录下。
4、 安装shadowsocks
pip install shadowsocks
5、 设置SS配置脚本
wget http://mirrors.163.com/.help/CentOS6-Base-163.repo
cd /etc/yum.repos.d/
mv CentOS-Base.repo CentOS-Base.repo.bak
mv CentOS6-Base-163.repo CentOS-Base.repo
yum clean all
yum makecache
yum update
类库组件依赖
sudo apt-get install -y make build-essential libssl-dev zlib1g-dev libbz2-dev \
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:
export PYENV_ROOT=/home/urname/.pyenv
export PATH=$PYENV_ROOT/bin:$PATH
使之生效
source ~/.bash_profile
下载pyenv的源码
git clone https://coding.net/u/code33/p/pyenv/git ~/.pyenv ${PYENV_ROOT}
~/.bashrc:
eval "$(pyenv init -)"
使之生效
source ~/.bashrc
试一试
pyenv version
pyenv versions
更多方法自己参考help
国内镜像服务器:
http://mirrors.sohu.com/python/
pyenv搜狐镜像源加速:http://mirrors.sohu.com/python/
下载需要的版本放到${PYENV_ROOT}/cache文件夹下面
然后执行 pyenv install 版本号 安装对应的python版本
傻瓜式脚本如下,其中v表示要下载的版本号
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
export PYTHON_BUILD_MIRROR_URL="http://mirrors.sohu.com/python/"
virtualenv 是pyenv工具的一个插件,用以各不同项目间的包环境隔离区分
大陆传送门:
https://coding.net/u/code33/p/virtualenv/git
git clone https://coding.net/u/code33/p/virtualenv/git ${PYENV_ROOT}/plugins/pyenv-virtualenv
下载好项目以后再添加自动运行脚本
~/.bashrc
eval "$(pyenv virtualenv-init -)"
假设pyenv已经安装好了2.7.11这个版本
pyenv virtualenv 2.7.11 project_envname0
pyenv local(this is pyenv shell) project_envname0
pyenv virtualenv 2.7.11 project_envname1
pyenv local project_envname1
查看virtualenv生效状态
pyenv virtualenvs
激活某个项目环境
pyenv local someone_project_envname
然后再检查激活状态
pyenv virtualenvs
可以看到结果
$ pyenv virtualenvs
3.5.1/envs/aiohttp-virtual-env (created from /home/adrdev/env/.pyenv/versions/3.5.1)
3.5.1/envs/pjmana-venv (created from /home/adrdev/env/.pyenv/versions/3.5.1)
3.5.1/envs/spd-mana (created from /home/adrdev/env/.pyenv/versions/3.5.1)
aiohttp-virtual-env (created from /home/adrdev/env/.pyenv/versions/3.5.1)
* pjmana-venv (created from /home/adrdev/env/.pyenv/versions/3.5.1)
spd-mana (created from /home/adrdev/env/.pyenv/versions/3.5.1)
(pjmana-venv)
这样就可以在该项目环境下管理只属于该环境的pip包
pip list
项目文件包list管理
导出当前virtualenv环境的pip list
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文件安装依赖包:
pip install -r pip-list.info
wget
一个下载用的工具类
pip install wget
pyyaml
Yaml文件格式解析类库
pip install pyyaml
datetime
日期时间处理类库
http://strftime.org/
example:
_arrdateTime=datetime.datetime.strptime(arrdateStr,'%Y-%m-%d %H:%M:%S.%f')
python2.6.x 很多应用都无法支持了,比如SSServer
从官网下载2.7.12
wget https://www.python.org/ftp/python/2.7.12/Python-2.7.12.tar.xz
从七牛下载
http://xyzsetup.dlhis.com/Python-2.7.12.tar.xz
解压
tar xvJf Python-2.7.12.tar.xz
安装一些必备组件,防止编译所需依赖出错
yum install openssl-devel
再装
yum install pcre-devel zlib unzip git
然后 后面照着这些教程走应该就可以了:
http://blog.csdn.net/jcjc918/article/details/11022345
手动添加源
add-apt-repository ppa:fkrull/deadsnakes-python2.7
更新源索引
apt-get update
对其执行升级操作
aptitude upgrade
wget http://webpy.org/static/web.py-0.38.tar.gz
解压并拷贝 web 文件夹到你的应用程序目录下。 或者,为了让所有的应用程序都可以使用,运行:
python setup.py install
更多细节可以参考:
http://webpy.org/install.zh-cn
python中的命令行参数
python中有一个模块sys,sys.argv这个属性提供了对命令行参数的访问。命令行参数是调用某个程序时除程序名外的其他参数。
sys.argv是命令行参数的列表
len(sys.argv)是命令行参数的个数
下面我们用一个简单的例子来说明一下。
#!/usr/bin/python
#coding:utf-8
import sys ##加载sys这个模块。
for i in range(len(sys.argv)):
print "第%d个参数是:%s" % (i,sys.argv[i])
从上面的脚本运行结果我们能看得出来第一个参数是脚本名本身也就是第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