ctp linux 编译,震惊, 某大学生竟然在深夜$这种事情 --ctp接口编译篇

我才是不是标题党 我才不是标题党 我是标题党 阿呸...

想必大家肯定很好奇编译教程对吧 。 主要针对的是linux 环境ubuntu 19.04 (18.04) 也是可以的。

因为windows可以直接用哈 具体看setup.py的代码

废话不多说哦 ..... 以ctp为例

然后 然后 emmmmm

假定我们新建一个文件夹 , 文件结构如下

ctpapi

---->ctpapi

---------> ctp

---------> init.py

----> setup.py

---->MAINFEST.in

1 , 我们复制一份 vnpy/api下面的ctp目录 覆盖 ctpapi 的ctp目录哦

此时变化为

ctpapi

---->ctpapi

---------> ctp(覆盖后的)

---------> init.py

----> setup.py

---->MAINFEST.in

上面的init前后要加两个下划线 ,吐槽编辑器 过滤掉了。。

MAINFEST.in 的内容

# include MANIFEST.in

include README.md

recursive-include ctpapi/ctp *

然后我们在setup.py中写入以下内容

import platform

from setuptools import Extension, setup

dir_path = "ctpapi"

if platform.uname().system == "Windows":

compiler_flags = [

"/MP", "/std:c++17", # standard

"/O2", "/Ob2", "/Oi", "/Ot", "/Oy", "/GL", # Optimization

"/wd4819" # 936 code page

]

extra_link_args = []

else:

compiler_flags = [

"-std=c++17", # standard

"-O3", # Optimization

"-Wno-delete-incomplete", "-Wno-sign-compare", "-pthread"

]

extra_link_args = ["-lstdc++"]

vnctpmd = Extension(

# 指定 vnctpmd 的位置

"ctpapi.ctp.vnctpmd",

[

f"{dir_path}/ctp/vnctp/vnctpmd/vnctpmd.cpp",

],

# 编译需要的头文件

include_dirs=[

f"{dir_path}/ctp/include",

f"{dir_path}/ctp/vnctp",

],

# 指定为c plus plus

language="cpp",

define_macros=[],

undef_macros=[],

# 依赖目录

library_dirs=[f"{dir_path}/ctp/libs", f"{dir_path}/ctp"],

# 依赖项

libraries=["thostmduserapi_se", "thosttraderapi_se", ],

extra_compile_args=compiler_flags,

extra_link_args=extra_link_args,

depends=[],

runtime_library_dirs=["$ORIGIN"],

)

vnctptd = Extension(

"ctpapi.ctp.vnctptd",

[

f"{dir_path}/ctp/vnctp/vnctptd/vnctptd.cpp",

],

include_dirs=[

f"{dir_path}/ctp/include",

f"{dir_path}/ctp/vnctp",

],

define_macros=[],

undef_macros=[],

library_dirs=[f"{dir_path}/ctp/libs", f"{dir_path}/ctp"],

libraries=["thostmduserapi_se", "thosttraderapi_se"],

extra_compile_args=compiler_flags,

extra_link_args=extra_link_args,

runtime_library_dirs=["$ORIGIN"],

depends=[],

language="cpp",

)

if platform.system() == "Windows":

# use pre-built pyd for windows ( support python 3.7 only )

ext_modules = []

# if you really want to build it . please check your environment (没测试过)

# ext_modules = [vnctptd, vnctpmd]

elif platform.system() == "Darwin":

ext_modules = []

else:

ext_modules = [vnctptd, vnctpmd]

pkgs = ['ctpapi', 'ctpapi.ctp']

install_requires = []

setup(

name='ctpapi',

version='1.0',

description="good luck",

author='somewheve',

author_email='####',

license="MIT",

packages=pkgs,

install_requires=install_requires,

platforms=["Windows", "Linux", "Mac OS-X"],

package_dir={'ctpapi': 'ctpapi/'},

package_data={'ctpapi': ['ctp/*', ]},

ext_modules=ext_modules,

classifiers=[

'Development Status :: 4 - Beta',

'Intended Audience :: Developers',

'License :: OSI Approved :: MIT License',

'Programming Language :: Python :: 3.7',

]

)

切换你的目录到setup.py的同级 ,打开命令行 。然后输入

python3.7 setup.py build

好像你就可以在ctpapi/build/lib.linux-x86_64-3.7/ctpapi/ctp 下面找到vnctpmd.cpython-37m-x86_64-linux-gnu.so 和 vnctptd.cpython-37m-x86_64-linux-gnu.so

把里面的ctpapi 复制出来放到一个新的地方

然后

在ctpapi的同级目录下打开Python3.7命令行输入

from ctpapi.ctp import vnctpmd

from ctpapi.ctp import vnctptd

具体代码我放到github上面 传说中的传送门

下载来 进入目录输入命令 python3.7 setup.py build 即可开始编译

当然你要注意自己环境 比如Gcc那些什么的。

ps: 如果我告诉你 上面的执行会出错你会不会打我?(即使编译不出错用起来也会出错的) 好吧 还需要安装语言支持

sudo locale-gen zh_CN.GB18030

请注意你的Python版本为3.7

ok 大功告成 !

最后插一句如果有帮到你点个star哈

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值