docker安装conda

本文详细记录了在Docker环境中安装Anaconda的过程,包括使用docker-anaconda镜像以及后续遇到的Python环境配置问题,特别是安装mysql-python模块时遇到的编译错误。通过修改MySQL头文件解决MariaDB版本不支持'reconnect'的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

记录docker安装conda遇到的问题

镜像

https://hub.docker.com/r/continuumio/anaconda3

docker-anaconda
带有可立即使用的Anaconda(基于Python 3.5)的自举式安装的Docker容器。

Anaconda发行版已安装到该/opt/conda文件夹中,并确保默认用户conda在其路径中具有命令。

Anaconda是由Python支持的领先的开放数据科学平台。Anaconda的开源版本是一个高性能发行版,其中包括100多个用于数据科学的最受欢迎的Python软件包。此外,它还提供对720多个Python和R软件包的访问,可以使用Anaconda附带的conda依赖项和环境管理器轻松安装它们。

用法

您可以使用以下命令下载并运行此映像:
docker pull continuumio/anaconda3
docker run -i -t continuumio/anaconda3 /bin/bash

然后再其中使用python2.7的环境去运行项目代码。但是需要mysql-python依赖。但是报错了。
在这里插入图片描述

我的解决办法是

apt-get install libmariadbclient-dev
apt install python-dev
apt-get -y install gcc
apt install default-libmysqlclient-dev

但是接着安装依然会报错
在这里插入图片描述
这个时候需要做的是:

vim /usr/include/mysql/mysql.h 在335行左右。
typedef struct st_mysql {
    NET         net;                    /* Communication parameters */
    void  *unused_0;
    char *host,*user,*passwd,*unix_socket,*server_version,*host_info;
    char *info,*db;
    const struct ma_charset_info_st *charset;      /* character set */
    MYSQL_FIELD *fields;
    MA_MEM_ROOT field_alloc;
    unsigned long long affected_rows;
    unsigned long long insert_id;               /* id if insert on table with NEXTNR */
    unsigned long long extra_info;              /* Used by mysqlshow */
    unsigned long thread_id;            /* Id for connection in server */
    unsigned long packet_length;
    unsigned int port;
    unsigned long client_flag;
    unsigned long server_capabilities;
    unsigned int protocol_version;
    unsigned int field_count;
    unsigned int server_status;
    unsigned int server_language;
    unsigned int warning_count;          /* warning count, added in 4.1 protocol */
    unsigned int reconnect; /* matt hacking mysql */
    struct st_mysql_options options;
    enum mysql_status status;
    my_bool     free_me;                /* If free in mysql_close */
    my_bool     unused_1;
    char                scramble_buff[20+ 1];
    /* madded after 3.23.58 */
    my_bool       unused_2;
    void          *unused_3, *unused_4, *unused_5, *unused_6;
    LIST          *stmts;
    const struct  st_mariadb_methods *methods;
    void          *thd;
    my_bool       *unbuffered_fetch_owner;
    char          *info_buffer;
    struct st_mariadb_extension *extension;
} MYSQL;

#warning This file should not be included by clients, include only <mysql.h>
^
In file included from _mysql.c:46:0:
/usr/include/mysql/mysql.h:440:3: warning: function declaration isn’t a prototype [-Wstrict-prototypes]
MYSQL_CLIENT_PLUGIN_HEADER
^
_mysql.c: In function ‘_mysql_ConnectionObject_ping’:
_mysql.c:2005:41: error: ‘MYSQL’ has no member named ‘reconnect’
if ( reconnect != -1 ) self->connection.reconnect = reconnect;
^
error: command ‘gcc’ failed with exit status 1
错误原因是 MariaDB 10.2 、10.3 的 MySQL 版本时没有 reconnect

解决:

vim /usr/include/mysql/mysql.h​

搜索 st_mysql 定义结构,添加 reconnect 声明如下:

unsigned int reconnect; / matt hacking mysql by mimvp.com /

my_bool reconnect; / set to 1 if automatic reconnect by mimvp.c

最后问题解决了。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值