使用Docker搭建Anaconda Python3.6的练习环境

本文介绍如何使用Docker搭建Anaconda Python3.6环境,包括安装基本依赖、设置时区和环境变量等步骤,并提供Dockerfile及构建、运行命令。
部署运行你感兴趣的模型镜像

文章作者:Tyan
博客:noahsnail.com  |  优快云  |  简书

最近在看Python 3的相关内容,由于电脑里已经装了Anaconda 2.7,因此就在Docker里搭建了一个Anaconda Python3.6的练习环境。Dockerfile如下:

FROM nvidia/cuda:8.0-cudnn6-devel-ubuntu16.04
MAINTAINER Tyan <tyan.liu.git@gmail.com>


# Install basic dependencies
RUN apt-get update && apt-get install -y --no-install-recommends \
        build-essential \
        cmake \
        git \
        wget \
        libopencv-dev \
        libsnappy-dev \
        python-dev \
        python-pip \
        tzdata \
        vim


# Install anaconda for python 3.6
RUN wget --quiet https://repo.continuum.io/archive/Anaconda3-5.0.1-Linux-x86_64.sh -O ~/anaconda.sh && \
    /bin/bash ~/anaconda.sh -b -p /opt/conda && \
    rm ~/anaconda.sh && \
    echo "export PATH=/opt/conda/bin:$PATH" >> ~/.bashrc


# Set timezone
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime


# Set locale
ENV LANG C.UTF-8 LC_ALL=C.UTF-8


# Initialize workspace
RUN mkdir /workspace
WORKDIR /workspace

构建docker image命令如下:

docker build -t python:3.6 .

运行docker image命令如下:

docker run -ti --rm python:3.6

您可能感兴趣的与本文相关的镜像

Python3.9

Python3.9

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

<think> 嗯……用户明确询问ROS Melodic对Python 3.6的支持情况。这个问题在ROS社区很典型,需要从技术实现和实际应用两个层面拆解。 查阅引用时注意到关键矛盾点:科研所的Python3环境与Melodic默认Python2.7冲突,导致cv_bridge崩溃。引用[1]详细描述了这种版本冲突如何破坏libgcc动态库加载,连pthread_cancel都失效了——这显然是底层环境错乱的表现。用户提到最终被迫全系统迁移到Python3.6的解决方案,侧面印证了官方支持不足的事实。 引用[2][3]提供了两种迂回方案:要么改用ROS2 foxy(明确支持Python3),要么通过anaconda虚拟环境隔离。但前者需要重写代码,后者可能引入新的依赖冲突。考虑到用户项目涉及软硬件集成(Jetson Xavier NX),更换ROS版本的成本显然高于处理Python兼容性问题。 技术细节上需要强调:Melodic的catkin构建系统原生绑定Python2.7,强行用Python3编译核心包会导致CMake配置链断裂。社区方案本质都是hack——手动修改CMakeLists.txt里的PYTHON_EXECUTABLE路径,或像引用[1]那样重建cv_bridge。这些操作可能引发级联反应,比如ROS节点无法发现彼此(master解析异常)。 用户提供的错误日志"libgcc_s.so.1 must be installed"很有价值,这实际是GLIBC动态链接问题。当Python3强行加载Python2.7编译的C++扩展时,符号表(symbol table)错位就会触发此类崩溃。建议后续回复时补充诊断方法:用ldd查cv_bridge.so的依赖树,或用strace跟踪rospy的库加载顺序。 要不要提Docker方案?引用[2]的docker教程确实优雅,但Jetson平台ARM架构的镜像兼容性需要额外验证。这个信息密度过高,可能放在进阶方案里更合适。 </think> 根据引用内容和ROS社区实践,**ROS Melodic不完全原生支持Python 3.6**,但可通过特定方法实现兼容。以下是关键分析: --- ### **核心结论** 1. **默认限制** - ROS Melodic官方设计基于**Python 2.7**(Ubuntu 18.04默认版本)。 - 核心工具链(如`rospy`、`catkin`)及官方软件包(如`cv_bridge`)默认编译为Python 2.7版本[^1][^3]。 2. **Python 3兼容性挑战** - **依赖冲突**:混合使用Python 2.7与3.6环境时,动态库加载可能冲突(如`libgcc_s.so.1`错误)[^1]。 - **编译问题**:Python 3需单独编译核心组件(如`cv_bridge`),但可能破坏ROS环境路径[^1]。 --- ### **可行的解决方案** #### **方案1:全系统迁移至Python 3环境** ```bash # 重新编译整个ROS Melodic(含依赖库) sudo apt remove ros-melodic-* export PYTHON_VERSION=3.6 sudo apt install python3-catkin-pkg python3-dev mkdir -p ~/melodic_py3/src && cd ~/melodic_py3 catkin_make -DPYTHON_EXECUTABLE=/usr/bin/python3 ``` - **优点**:彻底解决版本冲突。 - **缺点**:需重编译所有包,可能引入新依赖问题[^1]。 #### **方案2:隔离Python 3关键组件** ```bash # 仅编译Python 3版cv_bridge git clone https://github.com/ros-perception/vision_opencv.git cd vision_opencv/cv_bridge mkdir build && cd build cmake -DPYTHON_EXECUTABLE=/usr/bin/python3 .. make -j4 ``` - **使用前**:通过`source`加载独立环境(需谨慎处理`PYTHONPATH`)。 - **风险**:若与其他Python 2.7节点交互,仍可能崩溃[^1]。 #### **方案3:改用ROS 2或Docker** - **ROS 2 Foxy**:原生支持Python 3.6,避免编译问题(引用[2])。 ```bash # Docker示例(解决环境隔离) docker run -it --net=host osrf/ros:foxy-desktop ``` - **Docker优势**:隔离宿主系统,保留Melodic环境的同时部署Python 3应用[^2]。 --- ### **问题根源分析** | 现象 | 原因 | |--------------------------|----------------------------------------------------------------------| | `cv_bridge`转换失败 | Python 2.7编译的库无法被Python 3.6调用 | | `libgcc_s.so.1`加载错误 | 动态库路径被混合环境破坏(Python 3的`LD_LIBRARY_PATH`覆盖系统路径) | | `rospy`调用崩溃 | Python解释器版本与C++扩展不匹配 | > **建议优先级**: > 短期测试 → **方案2隔离编译**;长期项目 → **方案3迁移ROS 2**;系统级开发 → **方案1全环境重构**。 --- ###
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值