6165金沙总站函数计算,源码安装

5,总结


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

本文的原文连接是:

未经博主允许不得转载。
博主地址是:

  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 版本开始已经不需要源码安装了。

1,关于quantlib


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

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

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

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

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)

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 安装快。

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

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

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 我都放到晚上做了。
然后第二天再来看。

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

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

$ brew tap microsoft/mssql-release https://github.com/Microsoft/homebrew-mssql-release$ brew update$ ACCEPT_EULA=y brew install --no-sandbox msodbcsql mssql-tools

前言


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

相关资料:

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

本文的原文连接是:

未经博主允许不得转载。
博主地址是:

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

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

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

测试通过。

1> SELECT * FROM Inventory WHERE quantity > 152;2> GOid name quantity----------- -------------------------------------------------- ----------- 2 orange 154(1 rows affected)1> QUIT
$ 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

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

本文作者:倚贤

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

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

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

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

$ 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

创建测试数据库 TestDB。

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

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

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

$ 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

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 = %r\n' %  conn.close() return result

阅读原文

使用 homebrew 安装 mssql 客户端 sqlcmd。

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

$ 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

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

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

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

  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 目录下。