的终极教程,源码安装
分类:pc28.am

PythonStock(18):使用docker 安装 quantlib 源码安装&lib库安装,pythonstockdocker

python 连接数据库通常要安装第三方模块,连接 MS SQL Server 需要安装 pymssql 。由于 pymsql 依赖于 FreeTDS,对于先于 2.1.3 版本的 pymssql,需要先安装 FreeTDS。由于早期版本的 pymssql 只提供了 windows 下的 wheel 打包,其他平台需要从源码包编译安装,那需要先安装 freetds-dev 包,以提供必要的头文件。

AI这个概念好像突然就火起来了,年初大比分战胜李世石的AlphaGo成功的吸引了大量的关注,但其实看看你的手机上的语音助手,相机上的人脸识别,今日头条上帮你自动筛选出来的新闻,还有各大音乐软件的歌曲“每日推荐”……形形色色的AI早已进入我们生活的方方面面。深刻的影响了着我们,可以说,这是一个AI的时代。

原文链接 https://jinkey.ai/post/tech/mac-ren-yi-pythonhuan-jing-an-zhuang-caffe-de-zhong-ji-jiao-cheng
本文作者 Jinkey(微信公众号 jinkey-love,官网 https://jinkey.ai)
感谢 yubang 老司机指导填坑,大神的博客http://blog.yubangweb.com/
文章允许非篡改署名转载,删除或修改本段版权信息转载的,视为侵犯知识产权,我们保留追求您法律责任的权利,特此声明!

前言


使用Python开发一个股票项目。
项目地址:

相关资料:

主要使用开发语言是python。
使用的lib库是pandas,tushare,TensorFlow,tornado等。

本文的原文连接是:
未经博主允许不得转载。
博主地址是:

函数计算的 runtime 运行时的目录是只读的,所以对于需要使用 apt-get 和 pip 安装依赖的场景,需要将依赖安装在代码目录而不是系统目录。具体安装方法可以参考《函数计算安装依赖库方法小结》。而 pymssql 的老版本涉及到编译安装,比常见的二级制安装到本地目录略复杂一些。

其实早在2016 年 9 月,百度就开源了PaddlePaddle深度学习框架,并且很快就吸引了很多来自百度外的参与者。相信有不少同学曾经有着对这款又新鲜又强大的深度学习框架蠢蠢欲动,虽然有关PaddlePaddle的教程不太多,但百度官方就在PaddlePaddle的官网给出了一份详细的教程,包括其API和函数文档。不过它仍然是有门槛的,尤其是对于对计算机及编程环境搭建了解不深的同学,可能看着页面上凭空给出的代码及操作陷入懵逼。

1 概要

1,关于quantlib


QuantLib 是一个专注于 Quantitative Finance 计算与开发的 C 库。
是非常大的一个lib库。
官方网站是:

核心代码是c 写的,使用swig进行封装,支持python,java等好多语言。
github 项目地址:

是BSD开源项目。
学习文档:

关于quantlib的文档挺少的,还是这个哥们写的比较全面。以后慢慢研究。

函数计算依赖安装需要有个模拟的 linux 环境,从前我们推荐使用 fcli shell 的 sbox ,启动一个接近生产环境的 docker container 进行依赖安装。因为有些依赖是平台相关的,在 mac 系统安装的动态链接库无法在函数计算的 linux 环境下运行, pymssql 恰好属于这种情况。本文我将使用 fc-docker 进行安装和本地测试。

真正从零开始,PaddlePaddle详细安装入门图文教程!

1.1 为什么要写这篇文章

由于历史原因:
我的电脑有五六个直接安装在系统的Python的环境,加上一堆 Python 虚拟环境。

包括 Mac 系统的原因
自带的系统环境无法安装 pip 及其他第三方库,必须通过 homebrew来自行安装一个python 而这个python路径和系统的并不一样。
包括 Anaconda 的原因
之前为了安装某些科学计算库方便使用了Anaconda,并且需要同时使用python2和3,所以由多了两个环境。

在如此混乱的开发环境下,配置 Caffe 实在艰难,特此教程。

2,编译安装quantlib


linux安装文档:

首先要准备 libboost库
然后开始编译 quantlib ,发现编译的时间超级的长。
从编译出现的一些问题,到找到尝试。折腾了不少时间:
整理了下安装脚本如下:

cd /root 
echo "############ 1 download file ############ "
curl -o QuantLib-1.11.tar.gz https://codeload.github.com/lballabio/QuantLib/tar.gz/QuantLib-v1.11
curl -o QuantLib-SWIG-1.11.tar.gz https://codeload.github.com/lballabio/QuantLib-SWIG/tar.gz/QuantLib-SWIG-v1.11
echo "############ 2 install ubuntu libs ############ "
apt-get update && apt-get install -y python-dev swig automake autoconf libtool libboost-all-dev
#echo "############ 3 uncompress tar files ############ "
tar -zxvf QuantLib-1.11.tar.gz && tar -zxvf QuantLib-SWIG-1.11.tar.gz 
echo "############ 5 install quantlib ############ "
cd QuantLib-QuantLib-v1.11 && ./autogen.sh && 
./configure && make && make install && ldconfig
echo "############ 5 install quantlib-python3 ############ "
cd ../QuantLib-SWIG-QuantLib-SWIG-v1.11 && ./autogen.sh && ./configure PYTHON=/usr/bin/python3 && 
make -C Python && make -C Python install
echo "############ 6 rm tmp files ############ "
rm -rf /root/QuantLib-QuantLib-v1.11 /root/QuantLib-SWIG-QuantLib-SWIG-v1.11
rm -f /root/QuantLib-1.11.tar.gz /root/QuantLib-SWIG-1.11.tar.gz

别看就是个编译,不知道为啥这么耗时间。
编译 quantlib 就花了一个小时,编译 QuantLib-SWIG 我都放到晚上做了。
然后第二天再来看。

下面的例子是基于函数计算 runtime python3.6 的,对于 python2.7 也进行了测试,同样适用。

而今天我要做的,就是带着所有这些几乎没有编程基础却很想学习PaddlePaddle的同学跨过这道坎。告诉你们大家如何准备好使用PaddlePaddle进行编程所需的一切,以及如何看懂教程上的那些代码所代表的含义,那么废话不多说,我们马上开始。

1.2 为什么不用 docker 运行

因为 Pycharm Community Edition 2017.1 不支持远程调试,其他开发环境不好用。你要用 docker 的话可以不忽略该教程了。

3,编译docker镜像


#需要编译数个小时,慢慢等待。
RUN cd /root && curl -o QuantLib-1.11.tar.gz https://codeload.github.com/lballabio/QuantLib/tar.gz/QuantLib-v1.11 && 
    curl -o QuantLib-SWIG-1.11.tar.gz https://codeload.github.com/lballabio/QuantLib-SWIG/tar.gz/QuantLib-SWIG-v1.11 && 
    apt-get update && apt-get install -y python-dev swig automake autoconf libtool libboost-all-dev && 
    tar -zxvf QuantLib-1.11.tar.gz && tar -zxvf QuantLib-SWIG-1.11.tar.gz && 
    cd QuantLib-QuantLib-v1.11 && ./autogen.sh && ./configure && make && make install && ldconfig
# 变成两个任务,防止第二个失败了,人崩溃了。
RUN cd /root/QuantLib-SWIG-QuantLib-SWIG-v1.11 && ./autogen.sh && ./configure PYTHON=/usr/bin/python3 && 
    make -C Python && make -C Python install && apt-get remove -y python-dev swig automake autoconf libtool && 
    rm -rf /root/QuantLib-QuantLib-v1.11 && rm -rf /root/QuantLib-SWIG-QuantLib-SWIG-v1.11  && 
    rm -f /root/QuantLib-1.11.tar.gz  /root/QuantLib-SWIG-1.11.tar.gz

编译之后可以使用了:

>>> import QuantLib as ql 
>>> print(ql.__version__)
1.11

首先使用 docker 在本机 Mac 电脑下运行一个 SQL Server 2017 服务,并初始化表结构,编辑一个 index.py 的测试文件,以验证数据库访问是否成功。

第一步,找一台计算机

首先,我们第一步要有一个计算设备,俗话说巧妇难为无米之炊。你可以租用云服务器,当然也可以利用你手上现有的计算机和服务器。在这里为了使初始安装环境纯净,我将申请一个百度云服务器。

我们进入百度云官网,在产品中选择“云服务器BBC”。点击购买:

图片 1

在购买时,云服务器类型选择“GPU实例”,因为其他类型的云服务器都没有配置GPU。有时候“GPU实例”处于不可用状态,是因为该地区服务器已经被租完,这就要在左上角选择其他地区的服务器集群,或者更换“可用区”:

图片 2

我换到了苏州的集群。下一步,在GPU型号的选择上,因为老黄的那个条款,NVIDIA GeForce系列的GPU不允许用在商用深度学习领域,只能个人研究使用或者玩游戏,所以目前只有4种可以选:P40、P4、K40和NVIDIA 深度学习开发卡。他们在参数上有两种差别,一个是计算能力,一个是缓显存。例如:P4的单精度性能是5.5Tflops,P40性能是12Tflops。因为深度学习主要使用单精度计算(其实除了天气预测,流体模拟,量子色动力学等极端科研项目,用到的都是单精度或者半精度的运算),所以这个指标在实际影响上在你训练时训练速度快慢的问题。第二个差别就是GPU显存,显存问题其实优化的合理8G足够用,优化不合理,给你100G都会爆显存。有的热用了 CNN,你随便做个内积内存就翻倍了肯定要炸的。

其他的一路默认就可以,如果想用SSD,在存储层面点击“创建云磁盘”,选择”SSD云磁盘“,调整合适的容量就可以,之后会挂在在系统上:

图片 3

如果你想要从外网访问这个服务器,要选择“购买弹性公网IP”,实际就是给你的服务器分配一个公网IP,不然的话你只能从管理页面在网页上使用VNC远程连接。

之后根据自己的实际情况填写服务器登录密码和购买时长。linux系统为root,windows系统为Administrator。整体就是这个样子:

图片 4

付费方式可以选预付费和后付费,如果不是计算重度使用用户,使用后付费会便宜很多,以为他是按照使用量计费的。

付费完成后就可以在账户的“云服务器BCC-实例列表”里看到你的机器啦。默认名称是一个内部序号,如果服务器多的话为了方便区分,可以在右边的按钮重新输入名称:

图片 5

点击右侧的“VNC远程”可以从网页端连接到服务器的SHELL。

图片 6

当然,我们也可以在“监控”页面中找到服务器的IP地址,用XSHELL或者PUTTY等工具链接到服务器,在这用XSHELL演示一下:

图片 7

图片 8

图片 9

连接:

图片 10

接受并保存主机密钥。Linux用户名初始为root,建议使用root,就是为了方便,不用经常打sudo和输入密码:

图片 11

正确输入密码后就连接到服务器的shell了:

图片 12

这样一台可用的服务器就准备好了。

如果使用的而是自己的机器的话,请确保机器环境与以上一致

1.3 用到的环境

因为随着各种库更新,不一定有空更新教程导致该教程某些步骤不可用,特此说明一下写这个文章的时候各个库的版本。
MacOS 10.12.6
Python 2.7.13
pip 9.0.1
Pycharm Community Edition 2017.1
Homebrew 1.3.1
cmake version 3.8.2
caffe 1.0

4,python2 直接安装


如果是python2 的环境直接使用apt-get 进行安装:

apt-get install -y quantlib-python 

安装完成之后的版本是 1.7 是 2015 年发布的。

>>> import QuantLib as ql
>>> print(ql.__version__)
1.7

最新的是 1.11 ,要想安装最新的还是源码安装。
要想方便还是 apt-get 安装快。

$ docker pull mcr.microsoft.com/mssql/server:2017-latest$ docker run -e 'ACCEPT_EULA=Y' -e 'SA_PASSWORD=Codelife.me'  -p 1433:1433 --name sql1  -d mcr.microsoft.com/mssql/server:2017-latest

第二步

拿到shell后第一步当然是要换一个国内的apt源,我找了一个清华的源:

执行如下操作,备份原文件后,新建一个原文件:

# mv /etc/apt/sources.list /etc/apt/sources2.list
# vi /etc/apt/sources.list

使用i键进入编辑模式,然后将以下内容使用shift insert复制进去:

#默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial main restricted universe multiverse

# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial main restricted universe multiverse

deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-updates main restricted universe multiverse

# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-updates main restricted universe multiverse

deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-backports main restricted universe multiverse

# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-backports main restricted universe multiverse

deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-security main restricted universe multiverse

# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-security main restricted universe multiverse

输入后 按下esc,然后按下英文半角的冒号“:”,后输入wq,回车,就保存了。

最后别忘了输入apt-get update更新一下源文件

因为目前PaddlePaddle与python3不兼容,所以我们要需要一个2.7版本的python。

我们直接用apt下载就可以 apt-get install python。他默认是2.7版本。安装完成后进入到了等待模式,输入python可以看到是2.7版:

图片 13

当然我们也可以通过源码方式安装python2.7

wget [https://www.python.org/ftp/python/2.7.13/Python-2.7.13.tgz] 

下载Python2.7

图片 14

解压该包:

tar -xvf Python-2.7.13.tgz

进入该包:

cd Python-2.7.13

配置

 ./configure

编译:

make
make install

安装完毕

之后需要安装pip。Pip使用python的一个包管理工具,可以用它方便地直接下载安装python包。

输入 apt-get install python-pip 安装,他会默认安装python默认的2.7版本对应的PIP管理器

图片 15

安装完成后,输入pip -V来查看pip的版本

图片 16

装好pip后,首先先把numpy模块装好,因为他是paddlepaddle必备环境包

Pip install numpy

Pip默认已经用的是国外的源,那速度简直是再难,我们临时用清华源来安装:

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pyspider

安装完成后,进入python,输入import numpy as py 若没有报错则安装成功。

图片 17

2 环境准备

5,总结


编译quantlib 没有啥技术含量,就是编译时间太长了。
最新的 1.11 使用 1.7 的版本也没有啥问题。

本文的原文连接是:
未经博主允许不得转载。
博主地址是:

将 SQL Server 启动于 1433 端口,并设定 SA 账户密码为 Codelife.me

下面进入安装PaddlePaddle阶段。

安装PaddlePaddle有三种方式:

  1. 最简单的方式当然是用pip包管理器安装
  2. 编译源码安装
  3. 在docker中安装

1.1 用pip直接安装:

pip install -i https://pypi.douban.com/simple paddlepaddle==0.11.0

1.2 安装gpu版本前提是安装了CUDA和cudnn5,CUDA官方支持的是cuda7.5和cuda8。Cuddn加速的话PaddlePaddle可以使用cudnn v2之后的任何一个版本来编译运行,但推荐使用它目前所支持的最高版本最新版本的cudnn5):

pip install -i https://pypi.douban.com/simple paddlepaddle-gpu==0.11.0

图片 18

2.1 Homebrew

终端运行

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
$ brew tap microsoft/mssql-release https://github.com/Microsoft/homebrew-mssql-release$ brew update$ ACCEPT_EULA=y brew install --no-sandbox msodbcsql mssql-tools

2:从源码中编译

2.2 Python

brew install python

下载(get-pip.py)[https://bootstrap.pypa.io/get-pip.py][ get-pip.py所在目录,终端输入命令

python get-pip.py

完成后安装虚拟环境(也不是必须的,后面配置路径的时候会说到,这里顺便介绍虚拟环境,避免多个项目造成开发环境很混乱)

sudo pip install virtualenv

使用 homebrew 安装 mssql 客户端 sqlcmd。

编译依赖:

PaddlePaddle编译需要使用到下面的依赖(包含但不限于),其他的依赖软件,会自动在编译时下载。

PaddlePaddle编译依赖

|依赖 | 版本 | 说明|

|CMake| >=3.5| |

|GCC | 4.8.2 |推荐使用CentOS的devtools2|

|Python| 2.7.x |依赖libpython2.7.so|

|pip |>=9.0 | |

|numpy |||

|SWIG| >=2.0||

|Go |>=1.8 |可选|

首先你要吧源码从github上下载下来,并且进入paddle文件目录

git clone https://github.com/PaddlePaddle/Paddle.git

cd Paddle #进入paddle文件目录

mkdir build #创建编译文件夹

cd build #进入编译文件夹

cmake -DWITH_GPU=OFF -DWITH_TESTING=OFF .. #不要看漏后面有两个点,如果你安装的而是GPU版本的话,如想要支持GPU,请在编译参数DWITH_GPU设置为ON

2.3 CMake

brew install cmake
$ sqlcmd -S localhost -U SA -P 'Codelife.me'1>CREATE DATABASE TestDB2>SELECT Name from sys.Databases3>GOName-----------------------------------------------mastertempdbmodelmsdbTestDB(5 rows affected)

以下是cmake -D参数支持的所有编译选项:

  • WITH_GPU 是否支持GPU。 取决于是否寻找到CUDA工具链

  • WITH_DOUBLE 是否使用双精度浮点数。 否

  • WITH_DSO 是否运行时动态加载CUDA动态库,而非静态加载CUDA动态库。 是

  • WITH_AVX 是否编译含有AVX指令集的PaddlePaddle二进制文件 是

  • WITH_PYTHON 是否内嵌PYTHON解释器。方便今后的嵌入式移植工作。 是

  • WITH_STYLE_CHECK 是否编译时进行代码风格检查 是

  • WITH_RDMA 是否开启RDMA 否

  • WITH_TIMER 是否开启计时功能。如果开启会导致运行略慢,打印的日志变多,但是方便调试和测Benchmark 否

  • WITH_TESTING 是否开启单元测试 取决于是否寻找到GTEST

  • WITH_DOC 是否编译中英文文档 否

  • WITH_SWIG_PY 是否编译PYTHON的SWIG接口,该接口可用于预测和定制化训练 取决于是否寻找到SWIG

make

编译完成后会在build/python/dist目录下生成输出的whl包,可以选在在当前机器安装:

Make install

可以拷贝到目标机器安装:

pip install 目标路径/*.whl

如果之前机器上安装了旧版本的paddle,可以利用编译的二进制包,使用-U参数来升级安装:

pip install 目标路径/*.whl -U

2.4 Caffe 依赖

brew install -vd snappy leveldb gflags glog szip lmdb
brew tap homebrew/science
brew install hdf5 opencv
brew install --build-from-source --with-python -vd protobuf
brew install --build-from-source -vd boost boost-python
brew install protobuf boost

创建测试数据库 TestDB。

在docker中安装

百度把PaddlePaddle的编译环境打包成一个镜像,称为开发镜像,里面涵盖了 PaddlePaddle需要的所有编译工具。把编译出来的PaddlePaddle也打包成一个镜 像,称为生产镜像,里面涵盖了PaddlePaddle运行所需的所有环境。每次 PaddlePaddle发布新版本的时候都会发布对应版本的生产镜像以及开发镜像。运 行镜像包括纯CPU版本和GPU版本以及其对应的非AVX版本。他们会在 dockerhub.com 提供最新 的Docker镜像

使用Docker安装和运行PaddlePaddle可以无需考虑依赖环境即可运行。并且也可以在Windows的docker中运行。 如果你不了解docker的安装和基本操作,可以在这里http://docker-doc.readthedocs.io/zh_CN/latest/ 找到中文版的docker手册,找到你对应的操作系统开始学习使用docker。

在了解Docker的基本使用方法之后,即可开始下面的步骤:

执行下面的命令来下载PaddlePaddle的 Docker镜像,默认是cpu出版本的:

docker pull paddlepaddle/paddle

但镜像的默认地址依旧是国外的,为了方便在国内的开发者下载Docker镜像,百度提供了国内的镜像服务器供大家使用。我们使用paddle提供的一个国内的服务器下载:

docker pull docker.paddlepaddlehub.com/paddle

下载GPU版本(cuda8.0_cudnn5_avx_mkl)的Docker镜像:

docker pull paddlepaddle/paddle:latest-gpu #默认

docker pull docker.paddlepaddlehub.com/paddle:latest-gpu #推荐使用

下载使用不同的BLAS库的Docker镜像:

2.5 Caffe 的 Python 依赖

这里我使用的是 Pycharm 新建虚拟环境,新建在 /Users/Yourname/CaffeLearn(建立在哪里都可以,你自己记住就好)
选择基础环境的时候记得选择通过 Homebrew 安转的那个,应该是在/usr/local/Cellar/python/2.7.13,参考下图

图片 19

Pycharm创建虚拟环境

创建好之后,在控制台(点Terminal 那个Tab)依赖 caffe 所需要的 Python库

图片 20

运行以下命令

pip install numpy scikit-image protobuf
1> USE TestDB2> CREATE TABLE Inventory (id INT, name NVARCHAR, quantity INT)3> INSERT INTO Inventory VALUES (1, 'banana', 150); INSERT INTO Inventory VALUES (2, 'orange', 154);4> GOChanged database context to 'TestDB'.(1 rows affected)(1 rows affected)

默认是使用MKL的镜像

docker pull paddlepaddle/paddle

3 Caffe 配置详解

创建一张 Inventory 表,并参入一行测试数据。

使用OpenBLAS的镜像

docker pull paddlepaddle/paddle:latest-openblas

下载指定版本的Docker镜像,可以从 DockerHub网站 获取可选的tag,并执行下面的命令:

docker pull paddlepaddle/paddle:[tag]

3.1 Makefile.config

从(https://github.com/BVLC/caffe/releases)[https://github.com/BVLC/caffe/releases][ caffe-1.0`。该教程使用的是 caffe-1.0。

cp Makefile.config.example Makefile.config

用 Xcode 打开 Makefile.config(不要用 word 或者文本编辑打开)
如果你的 Mac 的显卡是Intel 的GPU,那么是没法使用 cuda 加速的,找到并把# CPU_ONLY := 1的注释去掉,即CPU_ONLY := 1,这样让 Caffe 仅在 CPU 下运行。

找到以下片段

# NOTE: this is required only if you will compile the python interface.
# We need to be able to find Python.h and numpy/arrayobject.h.
PYTHON_INCLUDE := /usr/include/python2.7 
        /usr/lib/python2.7/dist-packages/numpy/core/include

PYTHON_INCLUDE修改成( 步骤2.5叫你们记住的虚拟环境路径!!! 现在就有用了,一定得分别能找到Python.hnumpy/arrayobject.h两个文件),后面接着是python2.7还是python2.7.13还是python2.7.12取决于你们安装的版本,教程后面提到的部分也请注意这点

PYTHON_INCLUDE := /Users/Yourname/CaffeLearn/include/python2.7 
        /Users/Yourname/CaffeLearn/lib/python2.7/site-packages/numpy/core/include

保存,(caffe-1.0目录)终端运行

cmake .
1> SELECT * FROM Inventory WHERE quantity > 152;2> GOid name quantity----------- -------------------------------------------------- ----------- 2 orange 154(1 rows affected)1> QUIT

比如:

docker pull docker.paddlepaddlehub.com/paddle:0.11.0-gpu

在Docker中执行PaddlePaddle训练程序

运行PaddlePaddle Book

Jupyter Notebook是一个开源的web程序,大家可以通过它制作和分享带有代码、公式、图表、文字的交互式文档。用户可以通过网页浏览文档。

PaddlePaddle Book是为用户和开发者制作的一个交互式的Jupyter Nodebook。 如果您想要更深入了解deep learning,PaddlePaddle Book一定是您最好的选择。

我们提供可以直接运行PaddlePaddle Book的Docker镜像,直接运行:

docker run -p 8888:8888 paddlepaddle/book

然后在浏览器中输入以下网址:

http://localhost:8888/

皆可打开Jupyter Notebook客户页面

3.2 CaffeConfig.cmake

cmake完成后,用 Xcode 打开项目目录下的 CaffeConfig.cmake(不要用 word 或者文本编辑打开),把倒数第三行的set(Caffe_CPU_ONLY OFF)改成set(Caffe_CPU_ONLY ON),保存并关闭。

验证一下插入结果并退出。

3.3 CMakeCache.txt

用 Xcode 打开项目目录下的 CMakeCache.txt(不要用 word 或者文本编辑打开)

CPU_ONLY:BOOL=OFF

改为

CPU_ONLY:BOOL=ON

此外,找到然后修改PYTHON_EXECUTABLE:FILEPATHPYTHON_INCLUDE_DIR:PATHPYTHON_LIBRARY:FILEPATH,修改如下

//Path to a program.
PYTHON_EXECUTABLE:FILEPATH=/Users/Yourname/CaffeLearn/bin/python2.7

//Path to a file.
PYTHON_INCLUDE_DIR:PATH=Users/Yourname/CaffeLearn/include/python2.7

//Path to a library.( 通过 Homebrew 安装的 Python 环境)
PYTHON_LIBRARY:FILEPATH=/usr/local/Cellar/python/2.7.13_1/Frameworks/Python.framework/Versions/2.7/lib/libpython2.7.dylib

保存并关闭。

import pymssqldef handler(event, context): conn = pymssql.connect( host=r'docker.for.mac.host.internal', user=r'SA', password=r'Codelife.me', database='TestDB' ) cursor = conn.cursor() cursor.execute('SELECT * FROM inventory WHERE quantity > 152') result = '' for row in cursor: result  = 'row = %rn' %  conn.close() return result

4 Caffe 编译

编写一个测试函数 index.py。该函数连接 mac 宿主机docker.for.mac.host.internal (这里不能是 localhost,因为 fc-docker 会将函数运行在 container 内部)的 SQL Server 服务。执行一个查询,并把结果返回出来。

4.1 临时软连接系统和Homebrew 安装的 Python 路径

否则在接下来 make 的过程可能会出现错误:

'pyconfig.h' cannot be found

在终端运行以下命令建立连接

export CPLUS_INCLUDE_PATH="$CPLUS_INCLUDE_PATH:/usr/include/python2.7/"

创建一个空目录,存放上 index.py 文件。将命令会话的当前路径切换到 index.py 所在的目录,然后执行

4.2 开始编译

在终端依次执行

make all
make install
make runtest

编译且测试成功。

$ docker run --rm --name mssql-builder -t -d -v $:/code --entrypoint /bin/sh aliyunfc/runtime-python3.6$ docker exec -t mssql-builder pip install -t /code pymssql$ docker stop mssql-builder

5 使用

将 Caffe-1.0/python 路径下的 caffe 文件夹拷贝到虚拟环境下

/Users/Yourname/CaffeLearn/lib/python2.7/site-packages/

在项目中 import caffe 即可。

  1. 这里使用了 fc-docker 提供的 python3.6 的模拟环境:aliyunfc/runtime-python3.6
  2. 第一行启动了一个不会退出的 docker container,第二行使用 docker exec 进入这个 container 安装依赖,最后一行退出该 container。因为本地路径 $ 被挂载到 container 内部的 /code 目录,所以 container 退出以后 /code 目录的内容还会保留在本地当前路径下。
  3. pip 通过 -t 参数将 wheel 包安装在 /code 目录下。

6 版权声明

原文链接 https://jinkey.ai/post/tech/mac-ren-yi-pythonhuan-jing-an-zhuang-caffe-de-zhong-ji-jiao-cheng
本文作者 Jinkey(微信公众号 jinkey-love,官网 https://jinkey.ai)
感谢 yubang 老司机指导填坑,大神的博客http://blog.yubangweb.com/
文章允许非篡改署名转载,删除或修改本段版权信息转载的,视为侵犯知识产权,我们保留追求您法律责任的权利,特此声明!!

$ docker run --rm -v $:/code aliyunfc/runtime-python3.6 --handler index.handlerrow = (2, 'orange', 154)RequestId: d66496e9-4056-492b-98d9-5bf51e448174 Billed Duration: 144 ms Memory Size: 19

执行上面命令可以顺利返回结果。对于不需要使用老本 pymssql 的用户看到这里就可以结束了。

对于早于 2.1.3 版本的 pymssql, pip install 会触发源码编译安装,对于这种情况,需要安装编译时依赖的 freetds-dev,以及运行时依赖的 libsybdb5。编译时依赖可以直接安装在系统目录里,运行时依赖必须安装在本地目录下。

docker run --rm --name mssql-builder -t -d -v $:/code --entrypoint /bin/sh aliyunfc/runtime-python3.6docker exec -t mssql-builder apt-get install -y -d -o=dir::cache=/code libsybdb5docker exec -t mssql-builder bash -c 'for f in $(ls /code/archives/*.deb); do dpkg -x $f $ ; done;'docker exec -t mssql-builder bash -c "rm -rf /code/archives/; mkdir /code/lib;cd /code/lib; ln -sf ../usr/lib/x86_64-linux-gnu/libsybdb.so.5 ."docker exec -t mssql-builder apt-get install -y freetds-dev docker exec -t mssql-builder pip install cython docker exec -t mssql-builder pip install -t /code pymssql==2.1.3docker stop mssql-builder
  1. 第一行启动一个 container,第十行停止并自动删除该 container。
  2. 第二行至第三行将运行时依赖 libsybdb5 安装于本地目录。
  3. 将动态链接库 libsybdb.so.5 链接到目录 /code/lib 目录下,因为该目录默认配置到了环境变量 LD_LIBRARY_PATH 下。
  4. 将 freetds-dev 和 cython 安装到系统目录,用于 pymssql 编译安装,因为运行时 pymssql 不需要这两个库,所以无需安装在本地目录
  5. 安装 2.1.3 版本的 pymssql,从 2.1.4 版本开始已经不需要源码安装了。
$ docker run --rm -v $:/code aliyunfc/runtime-python3.6 --handler index.handlerrow = (2, 'orange', 154)RequestId: d66496e9-4056-492b-98d9-5bf51e448174 Billed Duration: 144 ms Memory Size: 19

测试通过。

这是一份来迟的函数计算使用 sql server 数据库的配置文档。当前版本的 pymssql 已经不再需要源码安装了。但是 pip 源码包安装的方法,对于其他类似的场景也是适用的。

本文也提供了一种基于 fc-docker 的配置和调试方法,不同 fcli 的 sbox,fc-docker 可以写成脚本反复执行,并且也可以用于本地模拟执行,对于 CI 场景非常有帮助。

本文作者:倚贤

阅读原文

本文为云栖社区原创内容,未经允许不得转载。

本文由pc28.am发布于pc28.am,转载请注明出处:的终极教程,源码安装

上一篇:新老产品PK,走进IBM专家集成系统之PureFlex 下一篇:没有了
猜你喜欢
热门排行
精彩图文
  • 的终极教程,源码安装
    的终极教程,源码安装
    PythonStock(18):使用docker 安装 quantlib 源码安装amp; apt-get install -y python-dev swig automake autoconf libtool libboost-all-dev#echo "############ 3 uncompress tar files ############
  • 每天一个linux命令,每天一个
    每天一个linux命令,每天一个
    每一日一个 Linux 命令(4):mkdir,linux命令mkdir linux mkdir 命令用来创建内定的称谓的目录,供给创制目录的客商在当前目录中具备写权限,何况钦点的目
  • CentOS安装蒙受,Linux搭建服务器Java应用碰着
    CentOS安装蒙受,Linux搭建服务器Java应用碰着
    阿里云ecs部署Java环境,阿里ecs部署java 1、安装JDK8 在顶峰实施下载命令:wget #直接下载只下载到download-fail-1505220.html的html文件。因为Oracle要求在下载JDK以前先
  • OpenCV学习笔记,VS2017耗费境况布署
    OpenCV学习笔记,VS2017耗费境况布署
    OpenCV3.2.0 VS2017支出条件布置,opencv3.2.0vs2017 前言: OpenCV3.1.0本子之后一度将x86那一个目录删除,在VS二零一六蒙受下无法进行三10个人的OpenCV编译。 正文使
  • 详述数据中心内部通风的几种形态,空气热交换
    详述数据中心内部通风的几种形态,空气热交换
    目前影响机房部分温度过高的原因是:气流组织不合理;机房内部的气流分部混乱,不能形成空气有序的循环;局部风量分配不足。为解决这些问题,必须