docker python环境_【环境搭建】Docker做Python环境版本控制

本文介绍了如何利用Docker解决Python环境依赖问题,避免包与包、包与Python版本之间的兼容性冲突。通过在Docker基础上构建自定义镜像,确保环境一致性。详细步骤包括修改apt源,安装特定版本的包,使用conda和pip,以及安装额外软件。此外,还提供了针对Windows环境的版本控制方案。
摘要由CSDN通过智能技术生成

问题背景

策略研发的python环境依赖众多的包,包与包,包与python以及conda的兼容性在生产环境中可能会冷不丁的冒出一个问题conda在安装新包的时候会solve environment,使得有些包升级,有些包降级,带来了之前写的代码可能不可用

数据以pickle的形式进行存储,这样新版本写的数据老版本(可能是集群的版本,升级涉及很多操作)无法读取

因此这里考虑版本的控制

注意事项conda install命令会擅自更新依赖库的版本(如:pandas,numpy等)导致版本不兼容,因而建议使用pip进行安装,或者conda指定版本进行安装:conda install package_name=xxx.yy.zz

实际操作

这里利用docker来实现跨平台的环境统一:基础的镜像使用jupyter/datascience-notebook, 在此基础上构建自己的镜像:

FROMjupyter/datascience-notebook:14fdfbf9cfc1USERrootRUN sed -i 's/archive.ubuntu.com/mirrors.163.com/' /etc/apt/sources.listRUN apt-get update && \ apt-get install -y --no-install-recommends fonts-arphic-gbsn00lp \ cron vim rsync openssh-client && \ apt-get clean && \ rm -rf /var/lib/apt/lists/*RUN service cron startENV NB_UID=1

RUN echo "$(id -nu $NB_UID)ALL=(ALL) NOPASSWD:ALL" > /etc/sudoers.d/notebookRUN usermod -d /home/jovyan $(id -nu $NB_UID)USER$NB_USERRUN conda install -y --override-channels \ -c pytorch \ -c mosek \ -c https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/ \ -c https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/ \ -c https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/ \ jupyter_contrib_nbextensions pandas cvxopt pytorch-cpu torchvision-cpu mosek lxml && \ conda clean -tipsyRUN npm config set registry https://registry.npm.taobao.org --global && \ npm config set disturl https://npm.taobao.org/dist --global && \ node /opt/conda/lib/python3.6/site-packages/jupyterlab/staging/yarn.js \ config set registry https://registry.npm.taobao.org --global && \ node /opt/conda/lib/python3.6/site-packages/jupyterlab/staging/yarn.js \ config set disturl https://npm.taobao.org/dist --global && \ jupyter labextension install -y --clean @jupyterlab/plotly-extension && \ npm cache clean --force && \ rm -rf $CONDA_DIR/share/jupyter/lab/staging && \ rm -rf /home/$NB_USER/.cache/yarnUSERroot# TA-LibRUN wget http://prdownloads.sourceforge.net/ta-lib/ta-lib-0.4.0-src.tar.gz && \ tar -xvzf ta-lib-0.4.0-src.tar.gz && \ cd ta-lib/ && \ ./configure --prefix=/usr && \ make && \ make install && \ cd .. && rm -rf ta-lib ta-lib-0.4.0-src.tar.gzUSER$NB_USERARG JUPYTERHUB_VERSION=0.9.*# lxml and psutil version constrainted by airflowRUN conda install -y --override-channels \ -c plotly \ -c https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/ \ -c https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/ \ -c https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/ \ lxml=4.2.5 plotly-orca psutil=4.4.2 && \ conda clean -tipsyRUN pip install --no-cache-dir -i https://pypi.tuna.tsinghua.edu.cn/simple \ jupyterhub==$JUPYTERHUB_VERSION arctic tqdm ipynb cufflinks alphalens \ pyfolio visdom pyecharts schedule TA-Lib bcolz bquery tushare plotly# arctic python3 fixRUN sed -i 's/compat=True/compat=True, encoding="latin1"/' \ /opt/conda/lib/python3.6/site-packages/arctic/store/_version_store_utils.py# orcaADD google-chrome-stable_181211_amd64.deb /tmp/google-chrome-stable_181211_amd64.debUSERrootRUN apt-get update && \ apt-get install -y --no-install-recommends libgtk2.0-0 \ libgconf-2-4 libxtst6 lsb-release libappindicator3-1 xvfb && \ apt-get clean && \ rm -rf /var/lib/apt/lists/* && \ dpkg -i /tmp/google-chrome-stable_181211_amd64.deb && \ rm /tmp/google-chrome-stable_181211_amd64.deb && \ mv /opt/conda/bin/orca /opt/conda/bin/orca_guiADD orca /opt/conda/bin/orcaRUN chown jovyan:users /opt/conda/bin/orcaUSER$NB_UID

orca的安装需要下载orca和chrome到Dockerfile所在的目录,这里自行决定即可,不用的话把对应的部分删除即可(本文的另一个目的也是为了做备份所以贴的是我们完整的配置);构建镜像

docker build -t example:tag . # 构建docker push example:tag you.docker.hub # 推送到远端仓库运行

#!/usr/bin/bashif [ $# -lt 1 ]; then

echo "Usage: bash$0"

exit 1

fi

docker run -d \ --name=dev-env \ -u jovyan \# 这里可能是必要的,详见https://zhuanlan.zhihu.com/p/243231585

--restart=unless-stopped \ -p $1:8888 \ -v $PWD:/home/jovyan/work:rw \ your.private.docker.hub/username/example:tag

关于Windows

对于金融数据而言,很多第三方数据仅提供Windows下的API,所以还需要针对WIndows也做一份版本控制的环境,为此这里的技术路线采用的是直接打包一个稳定可运行的环境然后使用的时候直接下载压缩包,解压;其中有些小问题要处理一下,如下:第一步:下载zip文件(OP打包好放在内网)放到安装位置,比如:D:\Anaconda3

第二步: 配置环境变量到Path(右键计算机/此电脑->属性->高级系统设置->环境变量->选中Path点编辑添加:D:\Anaconda3、D:\Anacondaa\Scripts、D:\Anaconda3\Library\bin

第三步:由于环境的变化,kernel的路径也会变化,需要让jupyter找到正确的kernel路径Step1:首先打开Anaconda Prompt

Step2: 输入jupyter kernelspec list查看安装的内核和位置

Step3:进入安装目录,打开kernel.jason, 查看python的编辑器的路径文件是否与安装路径一样,比如改为:"D:\\Anaconda3\\python.exe"

Step4: 刷新页面即可,如果还是不行的话可以重启jupyter notebook

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值