====== PYTHON虚拟环境管理 ======
===== Anconada & MiniConda =====
anaconda 是一个比较全面的PYTHON工具包,安装了FLASK,科学计算等一系列的库,而 MiniConda 只是包含一个环境管理工具,PYTHON环境这些需要自己安装,这里主要还是讲使用conda进行环境管理
==== 创建环境 ====
conda create --name py377 python=3.7.7 --channel conda-forge
==== 激活虚拟环境 ====
conda activate py377
==== 在虚拟环境中安装PYTHON模块 ====
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple xlwt
使用 ''-i'' 参数指定安装模块所在的网站
==== 检查项目依赖 ====
cd app-root
pipreq ./
==== 根据软件依赖文件批量安装依赖包 ====
pip install -r requirements.txt
requirements.txt 如下(示例)
# modulename[(==|>|<)version]
requests
tushare<0.8
psycopg2
pandas==0.24.0
xlwt
> pip install -q[qq] module 静默安装,只显示必要的信息
如果要写Crond计划任务文件,注意将激活了环境后的PATH变量的值传送给计划任务文件
# vi /etc/cron.d/IPMS
PATH="/opt/soft/anaconda202002/envs/py377/bin:/opt/soft/anaconda202002/condabin:/opt/software/spark-2.3.0-bin-hadoop2.7/bin:/opt/software/spark-2.3.0-bin-hadoop2.7/sbin:/usr/local/jdk1.8.0_161/bin:/usr/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/opt/ssh-server/bin:/root/bin"
MAILTO=""
*/5 * * * * c_HsiaoTien /opt/devel/IPM/sbin/arp-scan refresh
===== 范例 =====
==== 创建JupyterLab配置文件并设置密码 ====
jupyter server --generate-config
jupyter server password
vi ~/.jupyter/config.py
之后可以启动JUPYTER
===== 使用 MicroMamba =====
MicroMamba 是一个 MiniConda 的替代,在官网安装最新的 MiniConda 时,可能会遇到GLIBC标准库过旧的问题,这个库是LINUX系统核心库,一般不能变更。而 MicroMamba 不需要太高版本的 GLIBC,另外 具官方说明,该工具是一个单文件的小工具,且在处理虚拟环境时稳定性更好。
官方网站:[[https://mamba.readthedocs.io/en/latest/installation/micromamba-installation.html|MicroMamba]]
==== 安装 ====
Linux
"${SHELL}" <(curl -L micro.mamba.pm/install.sh)
Windows Powershell
Invoke-Expression ((Invoke-WebRequest -Uri https://micro.mamba.pm/install.ps1).Content)
==== 环境管理 ====
参考 Anconda, 在创建虚拟环境时,可能报 NOT EXISTS,这样的话,可以用更短的版本号试试,比如 我们创建一个PYTHON3.7的环境,在使用 ''python=3.7.7'' 时报不存在,但使用 ''python=3.7''时就可以创建。
===== 虚拟环境的打包和转移 =====
==== 在源机器上 ====
激活需要打包的环境
micromamba activate my-app
安装打包工具
pip install conda-pack
进行打包
conda-pack # 打包当前激活的环境
conda-pack -n my-app # 根据虚拟环境名称打包
conda-pack -p /opt/micromamba/envs/my-app #根据环境目录打包
conda-pack -n my-app -o output-name.tar.gz #指定打包的文件名
打包完成后,会在你执行命令的目录下出现一个 ''my-app.tar.gz'' 的压缩文件
==== 目标机器 ====
mkdir -p /opt/my-app
tar xzvf my-app.tar.gz -C /opt/my-app
. /opt/my-app/bin/activate #激活环境
. /opt/my-app/bin/deactivate #解除激活
conda-unpack #
注意:目标机器与源机器发行版本要一致,最好是完全一致,如果不能做到这一些,应该做到发行版比原来的新,且不要跨度太大
另外,此方法只打包PYTHON环境,但如果项目调用了非PYTHON功能,比如 snmpwalk 之类的系统命令,还有一些其他动态链接库,如 ''libpq'' 之类的外部库,也要一并解决。