pyenv 多环境部署(docker)

逸兴
逸兴
逸兴
57
文章
25
评论
2019-12-3015:44:053 3868字阅读12分53秒

pyenv 是一个python多版本控制工具,每一个python版本,在pyenv中都是一个虚拟环境,可以安装相关包而不会影响其他环境。

官网 https://github.com/pyenv/pyenv

快捷安装 https://github.com/pyenv/pyenv#the-automatic-installer

方便以后使用,使用docker安装。

1.0先run 一个centos环境

docker run -itd -p 8888:8888 -v /home/python/projects/py-27/:/data/ --name jupyter centos:7

8888端口是jupyter使用端口 /data 是jupyter 的数据目录

登录到jupyter容器:

docker exec -it jupyter bash

修改字符集:

export LANG="en_US.UTF-8"

echo 'export LANG="en_US.UTF-8"' >>/etc/bashrc

2.0安装pyenv

yum install git curl -y

python编译依赖如下

yum install -y gcc make patch gdbm-devel openssl-devel sqlite-devel readline-devel zlib-devel bzip2-devel

创建普通用户

useradd python

切换到python用户:

su - python

curl -L https://github.com/pyenv/pyenv-installer/raw/master/bin/pyenv-installer | bash

由于某些原因,浏览器可以访问,可以下载下来保存为shell脚本执行
https://raw.githubusercontent.com/pyenv/pyenv-installer/master/bin/pyenv-installer

也可下载 https://share.mcabana.com/share/python/pyenv-installer使用

安装完,按照提示处理,把下面的脚本放到当前用户的.bashrc文件末尾

# the following to ~/.bashrc:

export PATH="/home/python/.pyenv/bin:$PATH"

eval "$(pyenv init -)"

eval "$(pyenv virtualenv-init -)"

加载环境变量:

. ~/.bashrc

2.1 pyenv缓存

在pyenv中安装各个版本,可以要使用pyenv安装,由于连接国外网址比较慢,所以可以利用pyenv的包缓存,提前下载安装包,然后直接安装。

# 缓存目录

~/.pyenv/cache

此cache目录不存在,要自行创建。

mkdir ~/.pyenv/cache

pyenv 多环境部署(docker)

安装python多版本

pyenv install -l       # 列出所有可以安装的版本

pyenv install 3.6.9 -vvv         # -vvv 列出安装过程,安装时会先去缓存文件中找安装包,找不到再去下载

pyenv install 3.8.0 -vvv

pyenv version   # 查看当前的python版本

pyenv versions  # 查看所有安装的python版本

pyenv 多环境部署(docker)

* 当前的python版本,system表示当前操作系统使用的版本

pyenv是源代码编译安装Python解释器,所以一定要安装gcc等依赖。

3.0 pyenv使用

3.0.1 pyenv 虚拟环境

pyenv 可以将一个python版本及相关库封装成一个独立的“虚拟环境”,然后将这个虚拟环境应用到某个目录,此目录及其子目录就会继承这个虚拟环境,单个虚拟环境的配置不会影响到其他版本的虚拟环境。

pyenv virtualenv 3.6.9 py369   # 先创建一个虚拟环境,py369是别名

pyenv 多环境部署(docker)

然后切换到项目目录,应用这个py369的环境

pyenv 多环境部署(docker)

可以看到版本已经切换到了 3.6.9,这个python版本只对此目录以及其子目录生效,再目录外面,python版本依然是 系统默认的python版本

pyenv 多环境部署(docker)

这种虚拟环境可以同时创建多个,互不影响。

4.0 pip 包管理工具

pipPython包管理器,以后安装Python第三方包都需要它,它从3.x开始就集成在Python安装包里面

了。 相当于yum

查看pip版本,可以看到这个版本只是再py369 这个虚拟环境中的版本。

pyenv 多环境部署(docker)

4.0.1 pip 切换国内源

修改pip配置文件

windows配置文件: ~/pip/pip.ini windows家目录,在运行中键入 .

Linux配置文件: ~/.pip/pip.conf

内容,可参照 http://mirrors.aliyun.compypi帮助

[global]

index-url = https://mirrors.aliyun.com/pypi/simple/

[install]

trusted-host=mirrors.aliyun.com

(py369) [python@2118050e0593 py-27]$ mkdir ~/.pip
(py369) [python@2118050e0593 py-27]$ vi ~/.pip/pip.conf
(py369) [python@2118050e0593 py-27]$ cat ~/.pip/pip.conf
[global]
index-url = https://mirrors.aliyun.com/pypi/simple/
[install]
trusted-host=mirrors.aliyun.com
(py369) [python@2118050e0593 py-27]$

pip install pkgname 命令,是安装python包的命令

更新pip

pip install --upgrade pip

更新setuptools

pip install --upgrade setuptools

4.0.2 导出包

这里导出的是pip 安装的包的列表及版本号列表,不是包的安装文件

项目中开发完毕,要部署前,可以先导出当前使用的各种包的版本。在目标机器上安装这些包。

pyenv 多环境部署(docker)

安装导出的包:

pip install -r requirement.txt

5.0 安装jupyter

jupyter 是基于WEB的交互式笔记本,其中可以非常方便的使用Python

https://jupyter.org/   初学python时不建议使用pycharm等IDE工具,因为他们用起来太方便了。

jupyter 使用ipython(python的增强版)

安装Jupyter,也会依赖安装ipython

pip install jupyter

jupyter 帮助:

jupyter notebook help

5.0.1 启动jupyter

启动时需要注意使用的端口号,默认8888,同时会打开一个浏览器,服务器上一般不会安装浏览器。

可以指定数据目录.

# 使用root 创建数据目录,并授权给python账户

mkdir -p /data/jupyter

chown -R python.python /data/jupyter

cd /data/jupyter

pyenv local py369

# 设置密码

pyenv 多环境部署(docker)

# 启动jupyter

jupyter notebook --ip=0.0.0.0  --no-browser --notebook-dir=/data/jupyter

pyenv 多环境部署(docker)

pyenv 多环境部署(docker)

宿主机上映射的8888 端口已经监听了,使用浏览器访问这个ip的8888端口。

pyenv 多环境部署(docker)

输入密码,即可登录。

注意:

启动时可以使用nohup  & 不间断放到后台执行。

nohup   jupyter notebook --ip=0.0.0.0  --no-browser --notebook-dir=/home/python/projects/py-27/jupyter  &

常用快捷键

a之前插入代码块、b之后插入代码块

L 增加行号

运行代码块 shift + enter,选择下面的代码块

运行当前代码块 ctrl + enter

6.0 使用nignx代理 jupyter

因为我这个jupyter 是部署再一台ECS上的,为了方便使用就用个域名代理,这样就不用每次都输入IP了。

nginx 配置upstream

再http标签内,配置一个upstream

upstream jupyter {
    server 127.0.0.1:8888;
 }

再配置一个jupyter的虚拟主机,根据域名将请求发到jupyter 这个upstream

server {
    listen       172.26.1.178:80;
    server_name jy.lastack.top;
    location / {
        proxy_pass_header Server;
        proxy_set_header Host $http_host;
        proxy_redirect off;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Scheme $scheme;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "Upgrade";
        proxy_pass http://jupyter;
    }
    error_log /data/nginx_logs/jy.error.log debug;

}

nginx -t  测试下语法

nginx -s relaod 重载配置

最后使用域名访问就可以了。




https://www.hugbg.com/archives/1406.html
逸兴
  • 本文由 发表于 2019-12-3015:44:05
  • 除非特殊声明,本站文章均为原创,转载请务必保留本文链接
自动更新SSL证书 默认分类

自动更新SSL证书

现在免费的SSL证书只有三个月有效期,有一个博客和图床都用的ssl证书到期需要重新签发,挺麻烦的。原本想着写个脚本通过阿里云的 OpenAPI 进行证书的签发和部署,但是偶然发现了 ACME 这个项目...
推导式、生成式与生成器 基础语法

推导式、生成式与生成器

推导式 概述 Python中的推导式是一种快速、简洁的数据结构创建方式,不需要手动创建数据结构中的每一个元素,类似于给出一个规律,python会根据这个规律自动填充数据结构。支持有列表推导式、字典推导...
CVE-2024-38077 Windows RDL漏洞检测修复方法(末尾) 默认分类

CVE-2024-38077 Windows RDL漏洞检测修复方法(末尾)

一、漏洞详情 Windows Server是由微软开发的操作系统系列,专为服务器环境设计,用于管理网络、数据存储和应用程序的运行。它为企业和组织提供了稳定、可靠的服务器平台,支持各种规模的网络基础设施...
Django DRF禁用URL末尾斜杆(:) 点点滴滴

Django DRF禁用URL末尾斜杆(:)

一、关于URL末尾斜杆 比如http://127.0.0.1:8000/api/v1/register 和 http://127.0.0.1:8000/api/v1/register/, 这两个是同一...
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

评论:3   其中:访客  3   博主  0
    • 历史创造者 历史创造者

      伤害别人的人,就要有被伤害的觉悟! —《罪恶王冠》

      • root root

        有多少人以友谊的名义,爱着一个人,认为拥有,就是失去的开始。

        • root root

          我们终会相遇相知,在那悠远的苍穹。