猴哥讲故事

用故事的方式学习技术

Python emumerate Usage

enumerate()说明

  • enumerate()是python的内置函数
  • enumerate在字典上是枚举、列举的意思
  • 对于一个可迭代的(iterable)/可遍历的对象(如列表、字符串),enumerate将其组成一个索引序列,利用它可以同时获得索引和值
  • enumerate多用于在for循环中得到计数

实例

>>> goods = [['appple',70999],['banaba',2000],['orange',10000]]
>>> type(goods)
<type 'list'>
>>> for index,item in enumerate(goods):
...     print index,item
... 
0 ['appple', 70999]
1 ['banaba', 2000]
2 ['orange', 10000]
>>> for index,item in enumerate(goods):
...     print index,item[0],item[1]
... 
0 appple 70999
1 banaba 2000
2 orange 10000
>>> 

## enumerate可以有第二个参数
>>> for index,item in enumerate(goods,2):
...     print index,item[0],item[1]
... 
2 appple 70999
3 banaba 2000
4 orange 10000
>>> 

特殊说明

文件大小为83M,用python计算文件行数

实际脚本

#!/usr/bin/env python
#-*- coding:utf8 -*-

file = '/usr/local/tomcat/logs/appLog/appLog.2016-11-08.log'


## 方式一,对于文件很大的时候比较慢
#count = len(open(file,'r').readlines())
#print count


## 方式二,相对比较高效
count = 0
for index, line in enumerate(open(file,'r')):
    count += 1

print count

Hexo错误集合

整理hexo遇到的各种问题和解决办法


ERROR Deployer not found: git

遇到问题

升级hexo之后,执行`hexo d` 遇到问题如下:
hexo  ERROR Deployer not found: git

解决

npm install hexo-deployer-git --save

hexo next主题博客在本地显示正常,github内容空白的问题

遇到问题

copy原有的hexo项目升级之后,推送最新的代码到github,结果hexo next主题博客在本地显示正常,deploy到github上后只显示框架,内容空白的问题

解决

进入next主题的source目录,将vendors文件的文件名改成任意其他名字,如:lcvendors

vim themes/next/_config.yml
vendors:
  # Internal path prefix. Please do not edit it.
  _internal: lcvendors

然后
    hexo clean
    hexo g
    hexo d

参考

xiangwanpeng的CSDN博客

Error: Cannot find module ‘./build/Release/DTraceProviderBindings

这里提示是DTraceProviderBindings模块没有安装

npm install -g dtrace-provider

之后再执行 Hexo 相关的命令,但是报上面的错误。

解决

执行下面的命令安装,即可解决
install hexo --no-optional

待续…



公众号: DailyJobOps
DailyJobOps

Flask的config使用总结

针对项目的不同, flask 可以采用不同配置方式来快速开发

直接配置

app.config['HOST'] = 'www.baidu.com'
app.config.update(
    'HOST' = 'www.baidu.com',
    'PORT' = 3306
)

查看具体的配置 print app.config.get('HOST')

通过环境变量加载

export MyAppConfig='/etc/flask-setting.cfg'

app.config.from_envvar('MyAppConfig')

Nginx - Centos下Nginx报错集合

整理Centos系统下Nginx遇到的问题,一遍后续排查问题方便


[emerg] could not build the server_names_hash…

开始使用nginx只有一个虚拟主机,默认server_name 会使用 localhost, 今天配置nginx的server_name是一个正式存在的域名的时候,报错如下:

root@pts/0 $ nginx -t
nginx: [emerg] could not build the server_names_hash, you should increase server_names_hash_bucket_size: 32
nginx: configuration file /etc/nginx/nginx.conf test failed

How to fix

在nginx的配置文件nginx.conf的http段添加如下配置:

# vi /etc/nginx/nginx.conf
...
http {
        ...
        server_names_hash_max_size 512;
        server_names_hash_bucket_size 128;
        ...
}
...

root@pts/0 $ nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

nginx官方对server_name的说明请参考 链接


公众号: DailyJobOps
DailyJobOps

centos7下python2.7.5安装MySQL模块失败

导语

在Centos7下,当前python版本是2.7.5,测试实时获取日志然后解析入库中,安装MySQL-python模块报错如
EnvironmentError: mysql_config not found,原因是缺少了 mysql 相关支持。
这里把解决过程记录一下


具体报错信息:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
root@pts/4 $ pip install MySQL-python
Collecting MySQL-python
Using cached MySQL-python-1.2.5.zip
Complete output from command python setup.py egg_info:
sh: mysql_config: command not found
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "/tmp/pip-build-kWowP9/MySQL-python/setup.py", line 17, in <module>
metadata, options = get_config()
File "setup_posix.py", line 43, in get_config
libs = mysql_config("libs_r")
File "setup_posix.py", line 25, in mysql_config
raise EnvironmentError("%s not found" % (mysql_config.path,))
EnvironmentError: mysql_config not found

----------------------------------------
Command "python setup.py egg_info" failed with error code 1 in /tmp/pip-build-kWowP9/MySQL-python/


mysql_config是来自于 mysql-devel ,我用的是MySQL社区版,所以实际安装的是mysql-community-devel,网上的说法是同时安装python-devel,如果你没有安装的话一起安装

yum install python-devel mysql-community-devel -y

安装完成之后尝试再次 pip 安装 MySQL-python


再次安装

1
2
3
4
5
6
root@pts/4 $ pip install MySQL-python
Collecting MySQL-python
Using cached MySQL-python-1.2.5.zip
Installing collected packages: MySQL-python
Running setup.py install for MySQL-python ... done
Successfully installed MySQL-python-1.2.5

验证

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
root@pts/1 $ python
Python 2.7.5 (default, Sep 15 2016, 22:37:39)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-4)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import MySQLdb
>>> MySQLdb.
MySQLdb.BINARY MySQLdb.OperationalError( MySQLdb.__hash__( MySQLdb.debug(
MySQLdb.Binary( MySQLdb.ProgrammingError( MySQLdb.__init__( MySQLdb.escape(
MySQLdb.Connect( MySQLdb.ROWID MySQLdb.__name__ MySQLdb.escape_dict(
MySQLdb.Connection( MySQLdb.STRING MySQLdb.__new__( MySQLdb.escape_sequence(
MySQLdb.DATE MySQLdb.TIME MySQLdb.__package__ MySQLdb.escape_string(
MySQLdb.DATETIME MySQLdb.TIMESTAMP MySQLdb.__path__ MySQLdb.get_client_info(
MySQLdb.DBAPISet( MySQLdb.Time( MySQLdb.__reduce__( MySQLdb.paramstyle
MySQLdb.DataError( MySQLdb.TimeFromTicks( MySQLdb.__reduce_ex__( MySQLdb.release
MySQLdb.DatabaseError( MySQLdb.Timestamp( MySQLdb.__repr__( MySQLdb.result(
MySQLdb.Date( MySQLdb.TimestampFromTicks( MySQLdb.__revision__ MySQLdb.server_end(
MySQLdb.DateFromTicks( MySQLdb.Warning( MySQLdb.__setattr__( MySQLdb.server_init(
MySQLdb.Error( MySQLdb.__all__ MySQLdb.__sizeof__( MySQLdb.string_literal(
MySQLdb.FIELD_TYPE MySQLdb.__author__ MySQLdb.__str__( MySQLdb.test_DBAPISet_set_equality(
MySQLdb.IntegrityError( MySQLdb.__class__( MySQLdb.__subclasshook__( MySQLdb.test_DBAPISet_set_equality_membership(
MySQLdb.InterfaceError( MySQLdb.__delattr__( MySQLdb.__version__ MySQLdb.test_DBAPISet_set_inequality(
MySQLdb.InternalError( MySQLdb.__dict__ MySQLdb._mysql MySQLdb.test_DBAPISet_set_inequality_membership(
MySQLdb.MySQLError( MySQLdb.__doc__ MySQLdb.apilevel MySQLdb.thread_safe(
MySQLdb.NULL MySQLdb.__file__ MySQLdb.connect( MySQLdb.threadsafety
MySQLdb.NUMBER MySQLdb.__format__( MySQLdb.connection( MySQLdb.times
MySQLdb.NotSupportedError( MySQLdb.__getattribute__( MySQLdb.constants MySQLdb.version_info
>>>
>>> MySQLdb.version_info
(1, 2, 5, 'final', 1)
>>>


公众号: DailyJobOps
DailyJobOps

pymongo连接MongoDB系列一

导语

pymongo 是目前用的相对普遍一个python用来连接MongoDB的库,是工作中各种基本需求都能满足
具体api可以参考 pymongo API
pymongo github


安装 MongoDB

为了测试pyMongo连接mongodb,首先当然需要在centos下安装mongo,详细参考 Centos下安装MongoDB

安装 pymongo

如果没有pip, 建议先安装,至于为啥要用pip你懂得

yum install python-pip

pip 安装 pymongo

pip install pymongo

查看 pymongo是否安装成功

root@pts/4 $ python
Python 2.7.5 (default, Nov 20 2015, 02:00:19) 
[GCC 4.8.5 20150623 (Red Hat 4.8.5-4)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import pymongo        
>>> pymongo.version
'3.2.2'

使用 pymongo

连接到 MongoDB

有两种方式,等同

>>> client = pymongo.MongoClient('192.168.100.3', 27017)
>>> print client
MongoClient(host=['192.168.100.3:27017'], document_class=dict, tz_aware=False, connect=True)
>>> client2 = pymongo.MongoClient('mongodb://192.168.100.3:27017/')
>>> print client2
MongoClient(host=['192.168.100.3:27017'], document_class=dict, tz_aware=False, connect=True)
>>> 

得到 db 和 collection

有时候在脚本中会把 db 和 collection 作为参数使用,可以参考第二种方式

直接链接
>>> db = client.report
>>> print db
Database(MongoClient(host=[‘192.168.100.3:27017’], document_class=dict, tz_aware=False, connect=True), u’report’)
>>> collection = db.source_register
>>> print collection
Collection(Database(MongoClient(host=[‘192.168.100.3:27017’], document_class=dict, tz_aware=False, connect=True), u’report’), u’source_register’)
>>>

参数链接, 这种形式又有两种方法

## 定义参数
>>> pramadb = 'report'
>>> pramacoll = 'source_register'

## get db 
>>> db2 = client[pramadb]
>>> db3 = client.get_database(pramadb)
>>> print db2
Database(MongoClient(host=['192.168.100.3:27017'], document_class=dict, tz_aware=False, connect=True), u'report')
>>> print db3
Database(MongoClient(host=['192.168.100.3:27017'], document_class=dict, tz_aware=False, connect=True), u'report')
>>> 

## get collection 
>>> coll2 = db2[pramacoll]
>>> coll3 = db3.get_collection(pramacoll)
>>> print coll2
Collection(Database(MongoClient(host=['192.168.100.3:27017'], document_class=dict, tz_aware=False, connect=True), u'report'), u'source_register')
>>> print coll3
Collection(Database(MongoClient(host=['192.168.100.3:27017'], document_class=dict, tz_aware=False, connect=True), u'report'), u'source_register')
>>> 

常规操作举例

## insert or save 
>>> mydict = {"name":"James", "age": 28}
>>> collection.save(mydict)
ObjectId('57fdf212bcd34f48c4fce15a')


## find
>>> collection.find({"name":"James"})[0]
{u'age': 28, u'_id': ObjectId('57fdf212bcd34f48c4fce15a'), u'name': u'James'}
>>> 

^^ ^^ ^^ 未完待续… ^^ ^^ ^^



公众号: DailyJobOps
DailyJobOps

python配置tab自动不全

说明

有时候Centos系统默认安装的python进入交互模式下不能使用tab快捷键功能,这个时候需要自己进行相关配置

tab.py

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#!/usr/bin/env python 
# python startup file
import sys
import readline
import rlcompleter
import atexit
import os
# tab completion
readline.parse_and_bind('tab: complete')
# history file
histfile = os.path.join(os.environ['HOME'], '.pythonhistory')
try:
readline.read_history_file(histfile)
except IOError:
pass
atexit.register(readline.write_history_file, histfile)
del os, histfile, readline, rlcompleter

配置

这里以python.27为例,把
  • 上面的tab.py 放到 /usr/lib/python2.7/site-packages/ 下面,需要先导入sys,再倒入tab模块
  • 可以把tab.py的内容放到 /root/.pythontab文件中,然后在/root/.bash_profile中添加export PYTHONSTARTUP=~/.pythontab, 这种方式不需要再次导入 tab 模块

测试

root@pts/2 $ python 
Python 2.7.5 (default, Sep 15 2016, 22:37:39) 
[GCC 4.8.5 20150623 (Red Hat 4.8.5-4)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> import tab
>>> sys.
sys.__class__(              sys.__stdout__              sys.executable              sys.path
sys.__delattr__(            sys.__str__(                sys.exit(                   sys.path_hooks
sys.__dict__                sys.__subclasshook__(       sys.exitfunc(               sys.path_importer_cache

附加

PYTHONSTARTUP 官网解释:
If this is the name of a readable file, the Python commands in that file are executed before the first prompt is displayed in interactive mode. The file is executed in the same namespace where interactive commands are executed so that objects defined or imported in it can be used without qualification in the interactive session. You can also change the prompts sys.ps1 and sys.ps2 in this file.

简单来说就是这个文件会在第一次进入交互模式的时候会被执行,所以把tab.py 加入到这个变量设定的文件中就可以达到自动导入tab.py,实现自动补全的功能


公众号: DailyJobOps
DailyJobOps

Hexo配置评论统计搜索

前言

Hexo搭建好之后,可以编写markdown文档,渲染之后就可以生成静态页面博客,如果此时能有评论模块可以增加和同行之间的互动和知识交流,能有访问统计等,只能知道那篇博客的内容更受大家欢迎等等。


配置 duoshuo 评论

创建多说账号

多说网站 注册自己账号

多说官网注册

一般情况可以用百度账号或者QQ等直接登录

用QQ或者百度账号直接登录

duoshuo_shortname 设置

在如下图中的“多说域名”这里填写的 “liuc” 就是 duoshuo_shortname
duoshuo_shortname 设置

修改站点配置文件 _config.yml 添加如下配置

## duoshuo
duoshuo_shortname: liuc

评论测试

hexo d -g 发布代码查看效果,发现多说评论系统已经添加
多说评论效果测试

评论开启或者关闭设置

默认情况下,需要在每篇文章中开启评论,但是在标签页,分类页、关于页等关掉评论

comments: true 开启评论
comments: false 关闭评论

但是手动在每篇文章中添加比较费事,可以按下面的步骤添加默认行为

文章页默认开启

root@pts/3 $ cat scaffolds/post.md 
---
title: {{ title }}
date: {{ date }}
tags: 
categories: 
toc: true
comments:true
---

关闭标签页,分类页、关于页等评论

这里以标签页为例子

root@pts/3 $ cat source/tags/index.md 
---
title: tags
date: 2016-09-24 17:59:42
type: "tags"
comments: false
---

配置 阅读次数统计

待续

配置 Swiftype 搜索

待续


公众号: DailyJobOps
DailyJobOps

Centos下pyenv安装python多版本(增强版)

Centos 下 pyenv 安装 python 多版本

在学习和利用python开发的很多情况下,需要多版本的Python并存。此时需要在系统中安装多个Python,但又不能影响系统自带的 Python。pyenv 就是这样一个 Python 版本管理器。

当前情况

1
2
3
4
5
6
7
8
9
## 当天系统
root@pts/2 $ cat /etc/redhat-release
CentOS Linux release 7.1.1503 (Core)

## 当前 python 情况
root@pts/2 $ python
python python2 python2.7 python2.7-config python2-config python-config
root@pts/2 $ python -V
Python 2.7.5

安装 pyenv

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
## 安装
root@pts/2 $ git clone https://github.com/yyuu/pyenv.git ~/.pyenv
Cloning into '/root/.pyenv'...
remote: Counting objects: 12744, done.
remote: Total 12744 (delta 0), reused 0 (delta 0), pack-reused 12744
Receiving objects: 100% (12744/12744), 2.26 MiB | 453.00 KiB/s, done.
Resolving deltas: 100% (8837/8837), done.

## 配置
root@pts/2 $ vim ~/.bashrc
root@pts/2 $ cat ~/.bashrc
# .bashrc

# User specific aliases and functions

alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'

## add by liuchao at 20160607
export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init -)"

# Source global definitions
if [ -f /etc/bashrc ]; then
. /etc/bashrc
fi

## 配置生效
### 方式一
重新打开一个session
### 方式二
source ~/.bashrc
### 方式三
exec $SHELL -l

安装多版本

检查pyenv 安装的版本

root@pts/3 $ pyenv versions
* system (set by /root/.pyenv/version)

安装之前需要安装一些依赖包,否则会报如下错误

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
root@pts/2 $ pyenv install 3.4.4
Downloading Python-3.4.4.tgz...
-> https://www.python.org/ftp/python/3.4.4/Python-3.4.4.tgz
Installing Python-3.4.4...
WARNING: The Python bz2 extension was not compiled. Missing the bzip2 lib?
WARNING: The Python readline extension was not compiled. Missing the GNU readline lib?
ERROR: The Python ssl extension was not compiled. Missing the OpenSSL lib?

Please consult to the Wiki page to fix the problem.
https://github.com/yyuu/pyenv/wiki/Common-build-problems


BUILD FAILED (CentOS Linux 7 using python-build 20160509-25-g4c654d7)

Inspect or clean up the working tree at /tmp/python-build.20160607105740.3166
Results logged to /tmp/python-build.20160607105740.3166.log

Last 10 log lines:
(cd /root/.pyenv/versions/3.4.4/share/man/man1; ln -s python3.4.1 python3.1)
if test "xupgrade" != "xno" ; then \
case upgrade in \
upgrade) ensurepip="--upgrade" ;; \
install|*) ensurepip="" ;; \
esac; \
./python -E -m ensurepip \
$ensurepip --root=/ ; \
fi
Ignoring ensurepip failure: pip 7.1.2 requires SSL/TLS

安装相关依赖

1
2
3
4
yum install readline readline-devel readline-static -y
yum install openssl openssl-devel openssl-static -y
yum install sqlite-devel -y
yum install bzip2-devel bzip2-libs -y

安装多版本

  • pyenv 安装原理:
    从官网下载对应的版本压缩包到/tmp/目录,然后在/tmp/目录 执行编译安装,安装到~/.pyenv/versions/下面
  • pyenv 安装很慢的解决办法:
    可以先手动下载对应的版本压缩包,放到~/.pyenv/cache/下面,pyenv会校验md5值和完整性,确认无误的话就不会重新下载直接从这里安装

>>附件修改 201606008<<
详细可以参考 pyenv ~/.pyenv/cache 不生效问题

关于上面说的如果用 pyenv install 安装很慢的话,可以下载版本压缩包到 ~/.pyenv/cache/ 目录,这里有个很关键的问题所在,具体如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
添加 -v 参数安装的时候看到下载的文件名字是 'Python-3.4.4.tgz',如果
把这个文件名copy到 ~/.pyenv/cache/ 下面的是不起作用的,还是会继续
重新下载。

查找问题后发现,-v 显示的是下载 'Python-3.4.4.tgz', 但是
在/tmp/python-xxxxxx.xxxx/ 目录下面却显示的是 'Python-3.4.4.tar.gz' 文件。

所以把下载的 'Python-3.4.4.tgz' 改名为 'Python-3.4.4.tar.gz' 后放到
~/.pyenv/cache/ 下面后,然后 pyenv install 3.4.4 -v 就不会重新下载了。

注意:
不能采用把 Python-3.4.4.tgz 解压之后才压缩成 Python-3.4.4.tar.gz 的方式,
因为这样的话会导致源文件的md5值发生变化。而校验失败重新下载

-v 显示完整的安装过程

1
2
3
4
5
root@pts/2 $ pyenv install 3.4.4 `[-v]`
Downloading Python-3.4.4.tgz...
-> https://www.python.org/ftp/python/3.4.4/Python-3.4.4.tgz
Installing Python-3.4.4...
Installed Python-3.4.4 to /root/.pyenv/versions/3.4.4

检查

## 查看目前已经安装的
## system 表示系统安装的
## * 代表当前使用的是那个版本
root@pts/3 $ pyenv versions
* system (set by /root/.pyenv/version)
  3.4.4

更新数据库

pyenv rehash 

设置全局python

root@pts/3 $ python -V
Python 2.7.5

root@pts/3 $ pyenv global 3.4.4 
root@pts/3 $ pyenv versions
  system
* 3.4.4 (set by /root/.pyenv/version)

root@pts/3 $ python -V
Python 3.4.4

设置临时python版本

## 在当前session执行
pyenv local 2.7.11
pyenv shell 2.7.11

## 检查发现是从/tmp来设置的临时
root@pts/3 $ pyenv versions
  system
* 2.7.11 (set by /tmp/python-build.20160607105740.3166/Python-3.4.4/.python-version)
  3.4.4
1
2
3
4
5
6
7
8
## 在另外一个session中验证
root@pts/5 $ python -V
Python 3.4.4
Dev-mysql-mem [~] 2016-06-07 11:44:30
root@pts/5 $ pyenv versions
system
2.7.11
* 3.4.4 (set by /root/.pyenv/version)

Refer to

pyenv命令列表



公众号: DailyJobOps
DailyJobOps

Centos下python纯净虚拟环境

Centos 下 python 纯净虚拟环境

实际python开发中,可能并行的有多个python项目的开发,他们用到的python版本可能不一样,这个时候就需要有多个相互不依赖的环境来运行多个python项目virtualenv 就刚好满足这个需求


安装 virtualenv

可以用 pipeasy_install 或者 pyenv来安装virtualenv,但是推荐pyenv来安装,pyenv-virtualenv是pyenv的插件。有助于后面的环境切换等

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
root@pts/5 $ ls -l ~/.pyenv/plugins/
total 4
drwxr-xr-x 5 root root 4096 Jun 7 10:51 python-build

root@pts/5 $ git clone https://github.com/yyuu/pyenv-virtualenv.git ~/.pyenv/plugins/pyenv-virtualenv
Cloning into '/root/.pyenv/plugins/pyenv-virtualenv'...
remote: Counting objects: 1800, done.
remote: Total 1800 (delta 0), reused 0 (delta 0), pack-reused 1800
Receiving objects: 100% (1800/1800), 517.45 KiB | 143.00 KiB/s, done.
Resolving deltas: 100% (1230/1230), done.

root@pts/5 $ ls -l ~/.pyenv/plugins/
total 8
drwxr-xr-x 7 root root 4096 Jun 7 12:00 pyenv-virtualenv
drwxr-xr-x 5 root root 4096 Jun 7 10:51 python-build

配置

1
2
3
4
root@pts/5 $ vim ~/.bashrc 
Dev-mysql-mem [~] 2016-06-07 12:01:08
root@pts/5 $ cat ~/.bashrc |egrep 'virtualenv'
eval "$(pyenv virtualenv-init -)"

配置生效

### 方式一
重新打开一个session
### 方式二
source ~/.bashrc
### 方式三
exec $SHELL -l

创建虚拟环境

创建新的虚拟环境实际存在于~/.pyenv/versions/目录

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
## 创建 名字为py3.4.3的虚拟环境
## 注意 第三个 '3.4.4' 版本号码是必须的
root@pts/5 $ pyenv virtualenv 3.4.4 py3.4.4
Ignoring indexes: https://pypi.python.org/simple
Requirement already satisfied (use --upgrade to upgrade): setuptools in /root/.pyenv/versions/3.4.4/envs/py3.4.4/lib/python3.4/site-packages
Requirement already satisfied (use --upgrade to upgrade): pip in /root/.pyenv/versions/3.4.4/envs/py3.4.4/lib/python3.4/site-packages

## 查看新增的虚拟环境
root@pts/5 $ ls -l ~/.pyenv/versions/
total 8
drwxr-xr-x 6 root root 4096 Jun 7 11:43 2.7.11
drwxr-xr-x 7 root root 4096 Jun 7 12:05 3.4.4
lrwxrwxrwx 1 root root 40 Jun 7 12:05 py3.4.4 -> /root/.pyenv/versions/3.4.4/envs/py3.4.4

root@pts/5 $ pyenv versions
system
2.7.11
* 3.4.4 (set by /root/.pyenv/version)
3.4.4/envs/py3.4.4
py3.4.4

虚拟环境使用

1
2
3
4
5
6
7
8
9
10
11
12
13
## 进入虚拟环境
root@pts/6 $ pyenv activate py3.4.4
pyenv-virtualenv: prompt changing will be removed from future release. configure 'export PYENV_VIRTUALENV_DISABLE_PROMPT=1' to simulate the behavior.
(py3.4.4) Dev-mysql-mem [~] 2016-06-07 12:12:35

## 查看虚拟环境版本
root@pts/6 $ python -V
Python 3.4.4

## 退出到系统环境
root@pts/6 $ pyenv deactivate
Dev-mysql-mem [~] 2016-06-07 12:14:46
root@pts/6 $

卸载虚拟环境

1
2
3
4
5
## 方式一:暴力删除
rm -rf ~/.pyenv/versions/py3.4.4

## 方式二:温柔卸载
pyenv uninstall py3.4.4

Refer to

pyenv插件virtualenv



公众号: DailyJobOps
DailyJobOps