rqalpha探究 1 setup.py
rqalpha是难得几个好的做量化交易的开源项目,不过由于自己python用的实在不多,看起来还是觉得很复杂。
因此准备抽取出框架,从最简单的搭建。
思路
从setup着手,看一下如何建立一个发布工程,在此基础上完成一个最简单回测模型。
首先建立demo工程bwtougu,确保可以生成脚本文件bwtougu-script.py和bwtougu.exe(如在linux建立,则生成可执行程序bwtougu)
操作步骤
1 首先新建文件夹bwtougu, 在里面建立文件setup.py
2 建立依赖文件requirements.txt
3 建立子文件夹bwtougu,并在其中新建版本文件VERSION.txt
4 建立初始化文件__init__.py
5 建立程序入口文件__main__.py
操作完后即可进行测试了,建议用PyCharm进行调试,调试截图如下:
运行完成后即可在python的安装目录下找到bwtougu.exe文件和bwtougu-script.py
附上对应文件的源码
bwtougu\setup.py
#!usr/bin/evn python3
# -*- coding: utf-8 -*-
from pip.req import parse_requirements
from os.path import (
dirname,
join
)
from setuptools import (
setup,
find_packages,
)
with open(join(dirname(__file__), 'bwtougu/VERSION.txt'), 'rb') as f:
version = f.read().decode('ascii').strip()
requirements = [str(ir.req) for ir in parse_requirements("requirements.txt", session=False)]
setup(
name='bwtougu',
version=version,
description='bwtougu for python3',
author='luhx',
author_email='luhx@bangth.com',
license='Apache License v2',
package_data={'': ['*.*']},
url='http://www.bangth.com',
packages=find_packages(exclude=[]),
install_requires=requirements,
zip_safe=False,
entry_points={
"console_scripts":[
"bwtougu = bwtougu.__main__:entry_point"
]
},
classifiers=[
'Programming Language :: Python',
'Operating System :: Microsoft :: Windows',
'Operating System :: Unix',
'Programming Language :: Python :: 3.5',
'Programming Language :: Python :: 3.6',
],
)
bwtougu\requirements.txt
requests
numpy>=1.11.1
six>=1.10.0
logbook==1.0.0
click>6.6
bwtougu\bwtougu\__init__.py
#!usr/bin/env python3
# -*- coding: utf-8 -*-
import pkgutil
__all__ = [
'__version__',
'version_info'
]
__version__ = pkgutil.get_data(__package__, 'VERSION.txt').decode('ascii').strip()
version_info = tuple(int(v) if v.isdigit() else v
for v in __version__.split('.'))
bwtougu\bwtougu\__main__.py
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import six
import click
CONTEXT_SETTINGS={
'default_map': {
'run': {
}
}
}
@click.group(context_settings=CONTEXT_SETTINGS)
@click.option('-v', '--verbose', count=True)
@click.help_option('-h', '--help')
@click.pass_context
def cli(ctx, verbose):
ctx.obj["VERBOSE"] = verbose
def entry_point():
print("entry_point...")
cli(obj={})
@cli.command()
@click.option('-v', '--verbose', is_flag=True)
def version(**kwargs):
"""
Output Version Info
"""
from bwtougu import version_info
six.print_("Current Version: ", version_info)
if __name__ == '__main__':
entry_point()
完毕
rqalpha探究 1 setup.py的更多相关文章
- python setup.py 管理
发布项目遇到了坑……特此记录. How to write setup.py: https://docs.python.org/2/distutils/setupscript.html Setup.py ...
- python 利用 setup.py 手动安装django_chartit
手动安装django_chartit库 1 下载压缩包 2 解压到python安装目录下,文件夹名为django_chartit,并检查文件夹下是否有setup.py文件 3 在cmd中进入djang ...
- Python 模块chardet安装 setup.py
http://pypi.python.org/pypi/chardet#downloads 下载chardet-2.*.*.tar.gz:解压到site-package文件夹, Python及其一些模 ...
- Python安装mysql-python错误提示python setup.py egg_info
做python项目,需要用到mysql,一般用python-mysql,安装时遇到错误提示如下: Command "python setup.py egg_info" failed ...
- python setup.py uninstall
I have installed a python package with python setup.py install How do I uninstall it? ============== ...
- 如何使用setup.py文件
setup.py文件的使用:% python setup.py build #编译% python setup.py install #安装% python setup.py sdist ...
- 修改setup.py的源
方法一: 修改文件 ~/.pydistutils.cfg为: [easy_install] index_url = http://pypi.douban.com/simple 方法二: 直接在setu ...
- python 使用 setup.py 方式安装及包的卸载
安装: 可通过 --home 或 --prefix 指定安装目录 --prefix=xx/xxx 选择安装目录 --record files.txt 记录所有安装文件的路径 ...
- python制作安装包(setup.py)
1.制作setup.py from distutils.core import setup setup(name='Myblog', version='1.0', description='My Bl ...
随机推荐
- BZOJ.3809.Gty的二逼妹子序列(分块 莫队)
题目链接 /* 25832 kb 26964 ms 莫队+树状数组:增加/删除/查询 都是O(logn)的,总时间复杂度O(m*sqrt(n)*logn),卡不过 莫队+分块:这样查询虽然变成了sqr ...
- Shiro笔记(一)基本概念
Shiro笔记(一)基本概念 一.简介 Shiro是一个Java安全框架,可以帮助我们完成:认证.授权.加密.会话管理.与Web集成.缓存等. Authentication:身份认证/登录,验证用户是 ...
- 宝塔Linux面板 5.1正式版永久免费
宝塔Linux面板 5.1正式版永久免费2017/06/16 2分钟装好面板,一键管理服务器 Linux版请确保纯净系统安装(支持CentOS.Ubuntu.Debian.Fedora),Web端管理 ...
- vscode调试C/C++时支持查看定义查看引用
貌似老版支持现在不支持了,需要自己加第三方工具,方法如下: 确保你安装了c/c++,此文写作时版本为0.20.1 从GTAGS官网下载Win32程序,解压,将其放在合适的位置,并把其目录下/bin文件 ...
- Selenium2+python自动化73-定位的坑:class属性有空格
前言 有些class属性中间有空格,如果直接复制过来定位是会报错的InvalidSelectorException: Message: The given selector u-label f-dn ...
- 如何在IntelliJ IDEA中使用Git .ignore插件忽略不必要提交的文件
参考 https://blog.csdn.net/qq_34590097/article/details/56284935 最近初学Git,而且在使用的IDE是IntelliJ IDEA,发现IDE ...
- mysql 字符串分割 和 动态执行拼接sql
本人以前主要用的是MSSQL,最近项目在使用MYSQL,自己是一个 典型的小白.今天就记录一下 一个mysql存储过程,里面需要分割字符串和 动态执行sql语句. 关于字符串 分割我开始使用 LOCA ...
- HDu 2544 最短路【dijkstra & floyed & SPFA 】
最短路 Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submis ...
- Oracle只读用户角色的建立
授予某模式下对象读权限给角色,就可以建立Oracle只读用户角色,下文对该方法的实现步骤作了详细的介绍,供您参考学习. 下面为您介绍的是Oracle只读用户角色的建立方法,该方法供您参考,如果您在Or ...
- 使用AOF持久化文件实现还原Redis数据库并得到RDB持久化文件
目录 1 编写本文的初衷 2 具体实施 2.1 Redis持久化概念简介 2.2 获取指定Redis的AOF持久化文件 2.3 把Redis的持久化AOF文件转换为RDB文件 1 编写本文的初衷 因为 ...