记录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
最后问题解决了。