设为首页 收藏本站
查看: 1515|回复: 2

[经验分享] python虚拟开发环境搭建

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2017-9-13 10:19:36 | 显示全部楼层 |阅读模式
目录:
  • python版本问题
  • 开发环境-pyenv
  • 虚拟环境-virtualenv


一. python版本
2.x:发展到了2.7.13
3.x:发展到了3.6
3.x始自2008年,3.5版本发布于2015年
[url=]https://pythonclock.org   2.x的倒计时[/url]
不要迷信版本,学会一个版本,好好学一门语言,其他都不是问题。
二. 开发环境 - pyenvpyenv是python的多版本管理工具:
  • 管理python解释器
  • 管理python版本
  • 管理python的虚拟环境

1.安装pyenv:
挂载光盘,配置本地yum源:
1
2
3
4
5
6
7
8
9
[iyunv@ames ~]# cat /etc/redhat-release
CentOS Linux release 7.3.1611 (Core)
[iyunv@ames ~]# vim /etc/yum.repos.d/cdrom.repo
[cdrom]
name=cdrom
baseurl=file:///media
gpgcheck=0
enable=1
:wq



安装git:
1
[iyunv@ames ~]# yum -y install git



安装python依赖包:
1
[iyunv@ames ~]# yum -y install gcc make patch gdbm-devel openssl-devel sqlite-devel readline-devel zlib-devel bzip2-devel



创建python用户:
1
[iyunv@ames ~]# useradd python



使用python用户登录,然后执行:
1
[iyunv@ames ~]# su -l python[python@ames ~]$ curl -L https://raw.githubusercontent.co ... bin/pyenv-installer | bash



上面命令执行完后结尾处会有如下提示:
1
WARNING: seems you still have not added 'pyenv' to the load path.# Load pyenv automatically by adding# the following to ~/.bash_profile:export PATH="/home/python/.pyenv/bin:$PATH"eval "$(pyenv init -)"eval "$(pyenv virtualenv-init -)"



执行该操作:
1
2
3
4
5
6
[python@ames ~]$ vim .bash_profile
...
# 结尾处追加如下:
export PATH="/home/python/.pyenv/bin:$PATH"
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"



使其生效:
1
[python@ames ~]$ source .bash_profile



此时,pyenv已安装完成:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
[python@ames ~]$ pyenv
pyenv 1.1.3
Usage: pyenv <command> [<args>]

Some useful pyenv commands are:
   commands    List all available pyenv commands
   local       Set or show the local application-specific Python version
   global      Set or show the global Python version
   shell       Set or show the shell-specific Python version
   install     Install a Python version using python-build
   uninstall   Uninstall a specific Python version
   rehash      Rehash pyenv shims (run this after installing executables)
   version     Show the current Python version and its origin
   versions    List all Python versions available to pyenv
   which       Display the full path to an executable
   whence      List all Python versions that contain the given executable

See `pyenv help <command>' for information on a specific command.
For full documentation, see: https://github.com/pyenv/pyenv#readme
[python@ames ~]$



查看帮助信息:
1
2
[python@ames ~]$ pyenv help
[python@ames ~]$ pyenv help install



列出所有可用的python版本及python扩展工具:
1
[python@ames ~]$ pyenv install --list



此处选择python3.5.3进行安装:
1
2
3
4
5
6
[python@ames ~]$ pyenv install 3.5.3
Downloading Python-3.5.3.tar.xz...
-> https://www.python.org/ftp/python/3.5.3/Python-3.5.3.tar.xz
error: failed to download Python-3.5.3.tar.xz
BUILD FAILED (CentOS Linux 7 using python-build 20160602)
[python@ames ~]$



如上命令执行报错,解决办法如下:
使用缓存方式安装:
在~/.pyenv目录下,新建cache目录,放入下载好的版本文件。
1
2
3
4
5
[python@ames ~]$ mkdir .pyenv/cache
[python@ames ~]$ cp /mnt/tools/{Python-3.5.3.tar.gz,Python-3.5.3.tgz,Python-3.5.3.tar.xz} .pyenv/cache
[python@ames ~]$ ls .pyenv/cache/
Python-3.5.3.tar.gz  Python-3.5.3.tar.xz  Python-3.5.3.tgz
[python@ames ~]$



注: 因为不确定 pyenv install 会选择哪个python文件进行安装,所以把准备的三个安装包都放进去.
再次安装:
1
[python@ames ~]$ pyenv install 3.5.3 -v



查看:
1
2
3
4
[python@ames ~]$ pyenv versions
* system (set by /home/python/.pyenv/version)
  3.5.3
[python@ames ~]$



设置python版本:
1
2
3
4
5
6
7
[python@ames ~]$ pyenv help
Usage: pyenv <command> [<args>]
...
   local       Set or show the local application-specific Python version
   global      Set or show the global Python version
   shell       Set or show the shell-specific Python version
...



glocal:
设置全局的python版本,通过将版本号写入~/.pyenv/version文件的方式。
1
[python@ames ~]$ pyenv global 3.5.3



local:
设置面向程序的本地版本,通过将版本号写入当前目录下的.python-version文件的方式。这种方式设置的python版本优先级比global高,pyenv会从当前目录开始向上逐级查找.python-version文件,知道根目录为止,若找不到,就用global版本。使用pyenv local设置从当前工作目录开始向下递归都继承这个设置。
1
[python@ames ~]$ pyenv local 3.5.3



shell:
设置面向shell的python版本,只作用于当前会话,通过设置当前shell的PYENV_VERSION环境变量的方式。
1
[python@ames ~]$ pyenv shell 3.5.3



virtualenv:
前面说了pyenv可以帮助你在一台开发机上建立多个版本的python环境, 并提供方便的切换方法。
virtualenv则提供了一种功能, 就是将一个目录建立为一个虚拟的python环境, 这样的话, 用户可以建立多个虚拟环境, 每个环境里面的python版本可以是不同的, 也可以是相同的, 而且环境之间相互独立。
virtualenv插件的位置:
1
2
3
4
5
6
7
8
9
10
11
[python@ames ~]$ ll .pyenv/plugins/pyenv-virtualenv/
total 32
drwxrwxr-x. 2 python python  244 Sep 12 03:10 bin
-rw-rw-r--. 1 python python 6370 Sep 12 03:10 CHANGELOG.md
drwxrwxr-x. 3 python python   21 Sep 12 03:10 etc
-rwxrwxr-x. 1 python python  552 Sep 12 03:10 install.sh
-rw-rw-r--. 1 python python 1058 Sep 12 03:10 LICENSE
-rw-rw-r--. 1 python python 9190 Sep 12 03:10 README.md
drwxrwxr-x. 2 python python   40 Sep 12 03:10 shims
drwxrwxr-x. 4 python python 4096 Sep 12 03:10 test
[python@ames ~]$



为便于实验,我又安装了python3.6.1版本,安装方法见上文。
先查看一下:
1
2
3
4
5
[python@ames ~]$ pyenv versions
  system
* 3.5.3 (set by PYENV_VERSION environment variable)
  3.6.1
[python@ames ~]$



创建一个python3.5.3的虚拟环境:
1
2
3
4
[python@ames ~]$ pyenv virtualenv 3.5.3 env353
Requirement already satisfied: setuptools in /home/python/.pyenv/versions/3.5.3/envs/env353/lib/python3.5/site-packages
Requirement already satisfied: pip in /home/python/.pyenv/versions/3.5.3/envs/env353/lib/python3.5/site-packages
[python@ames ~]$



查看:
1
2
3
4
5
6
7
[python@ames ~]$ pyenv versions
  system
* 3.5.3 (set by PYENV_VERSION environment variable)
  3.5.3/envs/env353
  3.6.1
  env353
[python@ames ~]$



env353的真实目录位于:
1
2
3
4
5
6
7
8
[python@ames ~]$ ls .pyenv/versions -al
total 4
drwxrwxr-x.  4 python python   46 Sep 12 04:06 .
drwxrwxr-x. 13 python python 4096 Sep 12 03:48 ..
drwxr-xr-x.  7 python python   68 Sep 12 04:06 3.5.3
drwxr-xr-x.  6 python python   56 Sep 12 04:02 3.6.1
lrwxrwxrwx.  1 python python   46 Sep 12 04:06 env353 -> /home/python/.pyenv/versions/3.5.3/envs/env353
[python@ames ~]$



再创建一个基于3.6.1的虚拟环境:
1
2
3
4
5
6
7
8
9
10
11
12
[python@ames ~]$ pyenv virtualenv 3.6.1 env361
Requirement already satisfied: setuptools in /home/python/.pyenv/versions/3.6.1/envs/env361/lib/python3.6/site-packages
Requirement already satisfied: pip in /home/python/.pyenv/versions/3.6.1/envs/env361/lib/python3.6/site-packages
[python@ames ~]$ pyenv versions
  system
* 3.5.3 (set by PYENV_VERSION environment variable)
  3.5.3/envs/env353
  3.6.1
  3.6.1/envs/env361
  env353
  env361
[python@ames ~]$



查看真实目录:
1
2
3
4
5
6
7
[python@ames ~]$ ll .pyenv/versions
total 0
drwxr-xr-x. 7 python python 68 Sep 12 04:06 3.5.3
drwxr-xr-x. 7 python python 68 Sep 12 04:11 3.6.1
lrwxrwxrwx. 1 python python 46 Sep 12 04:06 env353 -> /home/python/.pyenv/versions/3.5.3/envs/env353
lrwxrwxrwx. 1 python python 46 Sep 12 04:11 env361 -> /home/python/.pyenv/versions/3.6.1/envs/env361
[python@ames ~]$



删除虚拟环境:
如果要删除这个虚拟环境,只须直接删除它所在的目录即可:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
[python@ames ~]$ pyenv versions
  system
* 3.5.3 (set by /home/python/.python-version)
  3.5.3/envs/env353
  3.6.1
  3.6.1/envs/env361
  env353
  env361
[python@ames ~]$ rm -rf .pyenv/versions/env361
[python@ames ~]$ pyenv versions
  system
* 3.5.3 (set by /home/python/.python-version)
  3.5.3/envs/env353
  3.6.1
  3.6.1/envs/env361
  env353
[python@ames ~]$



使用pip命令在env353的虚拟环境下安装ipython:
首先修改pip源,改成国内的:
1
2
3
4
5
6
(env353) [python@ames ~]$ mkdir .pip
(env353) [python@ames ~]$ vim .pip/pip.conf
[global]
index-url=https://mirrors.aliyun.com/pypi/simple/
trusted-host=mirrors.aliyun.com
:wq



安装ipython:
1
2
3
4
5
6
7
(env353) [python@ames ~]$ pip install ipython
(env353) [python@ames ~]$ ipython
Python 3.5.3 (default, Sep 12 2017, 03:35:37)
Type 'copyright', 'credits' or 'license' for more information
IPython 6.1.0 -- An enhanced Interactive Python. Type '?' for help.

In [1]:



安装Jupyter,也会帮安装ipython的:
Jupyter Notebook(此前被称为 IPython notebook)是一个交互式笔记本,支持运行 40 多种编程语言。Jupyter Notebook 的本质是一个 Web 应用程序,便于创建和共享文学化程序文档,支持实时代码,数学方程,可视化和 markdown。 用途包括:数据清理和转换,数值模拟,统计建模,机器学习等等。【来自百度百科】
安装:
1
(env353) [python@ames ~]$ pip install jupyter



查看帮助信息:
1
(env353) [python@ames ~]$ jupyter notebook help



开启服务进程:
1
2
3
4
5
6
7
8
9
10
11
(env353) [python@ames ~]$ jupyter notebook --ip=0.0.0.0 --no-browser
[I 04:51:53.222 NotebookApp] Writing notebook server cookie secret to /home/python/.local/share/jupyter/runtime/notebook_cookie_secret
[I 04:51:53.279 NotebookApp] Serving notebooks from local directory: /home/python
[I 04:51:53.279 NotebookApp] 0 active kernels
[I 04:51:53.279 NotebookApp] The Jupyter Notebook is running at: http://0.0.0.0:8888/?token=d5f49 ... 41cc054c377c829374d
[I 04:51:53.279 NotebookApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation).
[C 04:51:53.280 NotebookApp]

    Copy/paste this URL into your browser when you connect for the first time,
    to login with a token:
        http://0.0.0.0:8888/?token=d5f49 ... 41cc054c377c829374d



关闭防火墙后在浏览器访问:
1
[iyunv@ames ~]# iptables -F



输入token: d5f49225271fb3bdb44091a318af541cc054c377c829374d
wKiom1m3rO6RDwdQAACSEMDbDcQ180.png
打包env353开发环境:
1
(env353) [python@ames ~]$ pip freeze > requirement.txt



安装env353开发环境到新的虚拟环境:
1
(env361) [python@ames ~]$ pip install -r requirement.txt




完!


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-404482-1-1.html 上篇帖子: 批量升级python版本的shell 下篇帖子: Windows+Linux安装Python工具setuptools
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表