-
下载 cygwin
-
安装时选择包 make
-
将
C:\cygwin64\bin
添加到系统环境变量第一条 ,放后面会有 bug. -
然后就可以用了
-
有挺多 Linux 命令的,在没有将 wsl2 作为主力平台的时候,cygwin 的挺多命令能弥补 windows 的部分不足。
New Blog
代码人生:编织技术与生活的博客之旅
sentry 服务搭建
- 请提前准备好一个用于发邮件提醒的 email
- 参考 https://juejin.cn/post/6847902219015356423
下载官方的部署项目
git clone https://github.com/getsentry/onpremise.git
cd onpremise
git chechout 9.1.2
docker 换源
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://hkoa9dfz.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
安装
export SENTRY_IMAGE='sentry:9.1.2'
./install.sh
运行 Sentry docker-compose up -d
Bug
解决 sentry 安装时的 could not translate host name “postgres” to address: Name or service not known
docker rmi postgres
docker pull postgres:9.6
更新后发现表不兼容
偷懒直接删掉了
Vim 笔记
推荐一下 vim 的视屏学习
玩转 Vim 从放弃到爱不释手 - PegasusWang
这是个人对 PegasusWang 视屏学习笔记
图片来自 RUNOOB
a append
i insert
o open a line below
A append after line
I insert before line
O append a line above
vs vertical split
sp split
普通选择 v
选择行 V
ctrl + v 方块选择
y 复制
ctrl + h 删除上一个字符
ctrl + w 删除上一个单词
ctrl + u 删除当前行
ctrl + a 跳到开头
ctrl + e 跳到结尾
快速回到最后编辑 gi
w/W 移到下一个 word/WORD 开头
e/E 下一个 word/WORD 结尾
b/B 回到上一个 word/WORD 开头 backword
f{char} 移动到 char 字符上 F{char} 向前搜索
t{char} 移动到 char 的前面字符上
;, 选择上一个下一个
0 移动到行头 ^移动到行头非空白
$ 移动到行尾 g_移动到行尾非空白
() 在句子间移动
{} 在段落间移动
:help 查看帮助
gg/G 移动到文件开头和结尾
ctrl+o 快速返回
H/M/L 跳到屏幕的 Head / Middle / Lower
Ctrl +u / Ctrl +f 上下翻页 upword / forward
zz 把当前行设置为屏幕中间
d 配合使用删除一个单词
x 删除一个字符
dw 删除单词光标及之后的
daw 删除单词包括之后的空格
diw 删除单词
r replace 替换一个字符 R 不断替换
s substitute 插入模式 S 整行删除进入插入模式
c change
c t {char} 删除 到 char 并进入插入模式
/ or ? 向前向后搜索
n/N 上一个 下一个匹配
\* \# 向前向后匹配 直接搜索当前光标的单词
vim 替换命令
:[range] s[ubstitute]/{pattern}/{string}/[flags]
range 表示范围 比如 :10, 20 表示 10-20 行,%表示全部
pattern 是要替换的模式,string 是替换后文本
Flags 有几个常用的标志
g(global) 表示全局范围内执行
c(confirm) 表示每次确认
n 报告匹配的到的次数而不替换 可以用来查询匹配次数
vim 复制粘贴与寄存器
normal 模式下复制粘贴:
y(yank) 复制
p(paste) 粘贴
d 删除
使用 d 和 p 组合可以达到剪切的效果
visual 模式下选择,normal 模式下再使用 p 粘贴
yiw 复制一个单词 p 粘贴
yy 复制一行 p 粘贴
dd 删除一行 p 粘贴
insert 模式下的粘贴
Ctrl+v(Windows)
Cmd+v(MacOs)
鼠标右键-粘贴
Ctrl + n / ctrl + p 补全单词
ctrl+x ctrl+f 补全文件名
ctrl +x ctrl +o 补全代码
Vim-plug
https://github.com/junegunn/vim-plug
插件搜索:
https://vimawesome.com/
启动界面
https://github.com/mhinz/vim-startify
修改启动界面:https://github.com/mhinz/vim-startify
状态栏美化:https://github.com/vim-airline/vim-airline
增加代码缩进线条:https://github.com/yggdroot/indentline
call plug#begin('~/.vim/plugged')
Plug 'mhinz/vim-startify' " 修改启动界面
Plug 'vim-airline/vim-airline' " vim 状态栏美化
Plug 'vim-airline/vim-airline-themes' " vim 状态栏美化
Plug 'yggdroot/indentline' " 增加代码缩进线条
Plug 'w0ng/vim-hybrid' " 主题 :colorscheme hybrid
Plug 'scrooloose/nerdtree' " 文件目录
Plug 'ctrlpvim/ctrlp.vim' “ 模糊查找
Plug 'easymotion/vim-easymotion' " 文内映射
Plug 'tpope/vim-surround' " 单双引号 修改 ds cs ys
Plug '/usr/local/opt/fzf' " 模糊搜索
Plug 'junegunn/fzf.vim' " 模糊搜索 Ag 模糊搜索字符串 Files 模糊搜索目录
Plug 'brooth/far.vim' " 批量替换
Plug 'majutsushi/tagbar' " 浏览代码用
" Initialize plugin system"
call plug#end()
vim-go go ide
python-mode python 综合 mode
jedi-vim 代码补全
vim-interestingwords 高亮感兴趣的单词
neovim/vim8 异步补全插件
tpope/vim-commentary 代码注释
git 相关
vim-fugitive vim 里用 git
vim-gitgutter vim 里显示文件变动
gv.vim 查看代码提交记录
Tmux 强大的终端管理器
neovim 替代 vim
https://github.com/PegasusWang/vim-config
《Practical vim》
《笨方法学 vimscript》
Jenkins pipeline 构建后发给提交者(触发者)邮件
每次 Jenkins 走 pipeline 自动构建时,我需要等待构建完成,上到测试环境后再通知测试或者项目去跟近, 最开始想用机器人,后面发现发邮件很简单,我也有邮件弹窗提示,所以让 jenkins 做完后发个做完的邮件给我。
Jenkinsfile 中增加两段代码:
1. 在 stage 该在的地方添加下列代码
stage("get GIT_COMMIT_NAME/GIT_COMMIT_EMAIL") {
agent any
steps {
checkout scm
script {
// Git committer name
env.git_commit_name = sh (script: "git --no-pager show -s --format='%an' $GIT_COMMIT",returnStdout: true).trim()
echo "Git committer name: ${GIT_COMMIT_NAME}"
// Git committer email
env.git_commit_email = sh (script: "git --no-pager show -s --format='%ae' $GIT_COMMIT",returnStdout: true).trim()
echo "Git committer email: ${GIT_COMMIT_EMAIL}"
}
}
2. 在文件最后一个花括号前面增加下列代码
post {
success {
script {
mail to: "${env.git_commit_email}",
subject: "[Jenkins] SUCCESSFUL: ${env.appName} [${env.BUILD_NUMBER}]",
body: """SUCCESSFUL: Job '${env.JOB_NAME} [${env.BUILD_NUMBER}]'
分支:${env.BRANCH_NAME}
JOB_NAME: ${env.JOB_NAME}
提交人:${env.git_commit_name}
构建次数:${env.BUILD_NUMBER}
console output:${env.BUILD_URL}
"""
}
}
failure {
script {
mail to: "${env.git_commit_email}",
subject: "[Jenkins] FAILURE: ${env.appName} [${env.BUILD_NUMBER}]",
body: """<p>SUCCESSFUL: Job '${env.JOB_NAME} [${env.BUILD_NUMBER}]'
分支:${env.BRANCH_NAME}
JOB_NAME: ${env.JOB_NAME}
提交人:${env.git_commit_name}
构建次数:${env.BUILD_NUMBER}
console output:${env.BUILD_URL}
"""
}
}
}
从此自动构建 再也不用盯着构建任务是否结束再通知下游工作人员啦
LINK fatal error LNK1158 cannot run rc.exe
参考 LINK : fatal error LNK1158: cannot run 'rc.exe'
python 编译 cython 文件的时候
报错如下
ERROR: Command errored out with exit status 1:
command: 'd:\programdata\miniconda3\envs\py35\python.exe' -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'D:\\PycharmProjects\\rqalpha-mod-optimizer2\\setup.py'"'"'; __file__='"'"'D:\\PycharmProjects\\rqalpha-mo
d-optimizer2\\setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' develop --no-deps
cwd: D:\PycharmProjects\rqalpha-mod-optimizer2\
Complete output (38 lines):
running develop
running egg_info
writing requirements to rqalpha_mod_optimizer2.egg-info\requires.txt
writing dependency_links to rqalpha_mod_optimizer2.egg-info\dependency_links.txt
writing rqalpha_mod_optimizer2.egg-info\PKG-INFO
writing top-level names to rqalpha_mod_optimizer2.egg-info\top_level.txt
reading manifest file 'rqalpha_mod_optimizer2.egg-info\SOURCES.txt'
reading manifest template 'MANIFEST.in'
warning: no previously-included files matching '*' found under directory 'tests'
warning: no previously-included files matching '__pycache__' found under directory '*'
warning: no previously-included files matching '*.py[co]' found under directory '*'
writing manifest file 'rqalpha_mod_optimizer2.egg-info\SOURCES.txt'
running build_ext
cythoning rqalpha_mod_optimizer2\api.py to rqalpha_mod_optimizer2\api.c
cythoning rqalpha_mod_optimizer2\mod.py to rqalpha_mod_optimizer2\mod.c
cythoning rqalpha_mod_optimizer2\_version.py to rqalpha_mod_optimizer2\_version.c
building 'rqalpha_mod_optimizer2.api' extension
creating build
creating build\temp.win-amd64-3.5
creating build\temp.win-amd64-3.5\Release
creating build\temp.win-amd64-3.5\Release\rqalpha_mod_optimizer2
C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\BIN\x86_amd64\cl.exe /c /nologo /Ox /W3 /GL /DNDEBUG /MD -Id:\programdata\miniconda3\envs\py35\include -Id:\programdata\miniconda3\envs\py35\include "-IC:\Program Fil
es (x86)\Microsoft Visual Studio 14.0\VC\INCLUDE" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\ucrt" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\shared" "-IC:\Program Files (x86)\Windows K
its\10\include\10.0.17763.0\um" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\winrt" /Tcrqalpha_mod_optimizer2\api.c /Fobuild\temp.win-amd64-3.5\Release\rqalpha_mod_optimizer2\api.obj
api.c
creating D:\PycharmProjects\rqalpha-mod-optimizer2\build\lib.win-amd64-3.5
creating D:\PycharmProjects\rqalpha-mod-optimizer2\build\lib.win-amd64-3.5\rqalpha_mod_optimizer2
C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\BIN\x86_amd64\link.exe /nologo /INCREMENTAL:NO /LTCG /DLL /MANIFEST:EMBED,ID=2 /MANIFESTUAC:NO /LIBPATH:d:\programdata\miniconda3\envs\py35\libs /LIBPATH:d:\programda
ta\miniconda3\envs\py35\PCbuild\amd64 "/LIBPATH:C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\LIB\amd64" "/LIBPATH:C:\Program Files (x86)\Windows Kits\10\lib\10.0.17763.0\ucrt\x64" "/LIBPATH:C:\Program Files (x86)\Wi
ndows Kits\10\lib\10.0.17763.0\um\x64" /EXPORT:PyInit_api build\temp.win-amd64-3.5\Release\rqalpha_mod_optimizer2\api.obj /OUT:build\lib.win-amd64-3.5\rqalpha_mod_optimizer2\api.cp35-win_amd64.pyd /IMPLIB:build\temp.win-amd64
-3.5\Release\rqalpha_mod_optimizer2\api.cp35-win_amd64.lib
api.obj : warning LNK4197: export 'PyInit_api' specified multiple times; using first specification
Creating library build\temp.win-amd64-3.5\Release\rqalpha_mod_optimizer2\api.cp35-win_amd64.lib and object build\temp.win-amd64-3.5\Release\rqalpha_mod_optimizer2\api.cp35-win_amd64.exp
Generating code
Finished generating code
LINK : fatal error LNK1158: cannot run 'rc.exe'
d:\programdata\miniconda3\envs\py35\lib\site-packages\Cython\Compiler\Main.py:369: FutureWarning: Cython directive 'language_level' not set, using 2 for now (Py2). This will change in a later release! File: D:\PycharmProj
ects\rqalpha-mod-optimizer2\rqalpha_mod_optimizer2\api.py
tree = Parsing.p_module(s, pxd, full_module_name)
d:\programdata\miniconda3\envs\py35\lib\site-packages\Cython\Compiler\Main.py:369: FutureWarning: Cython directive 'language_level' not set, using 2 for now (Py2). This will change in a later release! File: D:\PycharmProj
ects\rqalpha-mod-optimizer2\rqalpha_mod_optimizer2\mod.py
tree = Parsing.p_module(s, pxd, full_module_name)
d:\programdata\miniconda3\envs\py35\lib\site-packages\Cython\Compiler\Main.py:369: FutureWarning: Cython directive 'language_level' not set, using 2 for now (Py2). This will change in a later release! File: D:\PycharmProj
ects\rqalpha-mod-optimizer2\rqalpha_mod_optimizer2\_version.py
tree = Parsing.p_module(s, pxd, full_module_name)
error: command 'C:\\Program Files (x86)\\Microsoft Visual Studio 14.0\\VC\\BIN\\x86_amd64\\link.exe' failed with exit status 1158
----------------------------------------
Rolling back uninstall of rqalpha-mod-optimizer2
Moving to d:\programdata\miniconda3\envs\py35\lib\site-packages\rqalpha_mod_optimizer2-0.2.5.dist-info\
from d:\programdata\miniconda3\envs\py35\lib\site-packages\~qalpha_mod_optimizer2-0.2.5.dist-info
Moving to d:\programdata\miniconda3\envs\py35\lib\site-packages\rqalpha_mod_optimizer2\
from d:\programdata\miniconda3\envs\py35\lib\site-packages\~qalpha_mod_optimizer2
ERROR: Command errored out with exit status 1: 'd:\programdata\miniconda3\envs\py35\python.exe' -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'D:\\PycharmProjects\\rqalpha-mod-optimizer2\\setup.py'"'"'; __file__='"'
"'D:\\PycharmProjects\\rqalpha-mod-optimizer2\\setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' dev
elop --no-deps Check the logs for full command output.
解决
C:\Program Files (x86)\Windows Kits\8.1\bin\x86
这个目录下的 rc.exe 和 rcdll.dll 拷贝到我的 Visual C++ 的 VC/Bin 目录下:
D:\Apps\x86\Microsoft\Visual_Studio\v14.0\VC\bin
通过错误信息,我电脑的文件位置是 C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\BIN\x86_amd64\
注意我的 Visual C++ 的安装目录可能和你的不同,你需要用你自己的的 VC/Bin 目录。
PyCharm及vscode快速配置RQSDK上手 说明文档
PyCharm及 VS Code 快速配置RQSDK上手
PyCharm
为什么要用PyCharm?
- PyCharm 作为 IDE(集成开发环境),再带 python 解释器和虚拟环境管理功能,开箱即用
- PyCharm 默认的内置功能极为丰富(Git、数据库支持、框架支持等),无需手动配置插件便可直接使用
- PyCharm 内置了在业界无出其右的静态代码审查(code inspect)功能
PyCharm 下载
官网提供了专业版和社区版下载。
-
专业版用于科学计算和 Web 开发。同时具有 HTML、JS 和 SQL 等支持。专业版 PyCharm 支持试用30天。
-
社区版用于通常的 Python 开发。免费且开源。
创建 PyCharm 工程(Project)
下载且安装完成 PyCharm 后,便可打开 Pycharm 后建立一个工程。该阶段可以设置项目使用的 Python 解释器/虚拟环境,后续开发中的代码提示、调试等功能都依赖为工程配置的虚拟环境:
- 点击 Create New Project 按钮
- 展开 Project interpreter
- 选择虚拟环境(若没有已存在环境,则 PyCharm 会自动创建)
- 点击 Create 按钮
如果没有python环境 ,编辑器右下角会有进度条提示python的安装进度。
工程创建完成后,亦可在设置中修改当前工程使用的虚拟环境:
- 点击左上角菜单栏FIle -> Settings(macOS 中为 PyCharm -> Preference)
- 点击 Project: **** -> Project Interpreter
- 点击右边小齿轮 -> Show All
- 点击加号(+) -> 选择虚拟环境(Virtualenv Environment) 或者 Conda 环境(Conda Environment) `
在 PyCharm 中安装 RQSDK
若当前工程配置的虚拟环境中还未安装 RQSDK,可以直接在 PyCharm 中调用终端(terminal)安装,PyCharm 会自动在改终端激活先前配置好的虚拟环境。 若点击左下角 Terminal 以激活终端,输入以下代码以安装 RQSDK
pip install -i https://pypi.douban.com/simple rqsdk
使用 PyCharm 编写代码
-
创建 Python 模块(module)
鼠标右键项目文件夹 -> New -> Python File -> 输入文件名
-
若当前工程正确配置了虚拟环境,且虚拟环境中安装了 RQSDK,在 py 文件中输入“rq”时便可以看到 PyCharm 给出的代码提示
-
在 py 文件中输入代码,如使用 RQDatac 调取日线数据:
import rqdatac
rqdatac.init()
print(rqdatac.get_price("000001.XSHE"))
- 在编辑区域点击右键执行 Run... 便可以运行当前模块,注意,上述代码的运行要求事先使用
rqsdk license
命令配置好 license。
- 当用了
rqsdk install rqalpha_plus
后,当前python环境也会有 rqoptimizer 和 rqfactor
使用 PyCharm 运行回测
回测在终端中需要通过 rqalpha-plus 命令而非 python 命令运行,故在 PyCharm 中运行回测需要进行一些额外的配置,以简单的 buy-and-hold 回测策略为例。
1 创建名为 buy_and_hold 的 python 模块并键入以下代码:
# buy_and_hold.py
def init(context):
context.s = "000001.XSHE"
context.fired = False
def handle_bar(context, bar_dict):
if not context.fired:
order_shares(context.s, 1000)
context.fired = True
2 点击右上角的 Add Configuration
3 在打开的窗口中将第一项左侧默认的运行方式由 Script path
修改为 Module name
4 设置 Module name
为 rqalpha_plus
,设置 Parameters
为回测运行的子命令 run
及其参数,如:
run -f buy_and_hold.py -s 20190101 -e 20191231 -a stock 20000 --plot
5 点击 OK 按钮以完成配置 6 点击右上角的三角形按钮以运行回测,或点击虫子按钮以调试(debug)代码
Visual Studio Code (VS Code)
为什么要用 VS Code?
- 轻量化,下载安装更快;资源占用低,对配置相对不足的计算机更友好
- 启动快速,首次创建工程时没有漫长等待创建索引的过程
- 生态健全,有着丰富的第三方主题和插件
在Visual Studio Code官网可以下载标准版。
安装 Python 插件(Extensions)
VScode 不是 python 专用的编辑器,故使用其开发 python 需要安装专门的插件支持才能获得代码提示、审查、调试等功能:
- 在左侧栏点击 Extensions 后,搜索 python,选择搜索到的第一项并点击
install
按钮安装。
设置虚拟环境/Python 解释器
- 使用 Ctrl+Shift+P 快捷键(macOS 为 Command+Shift+P)打开 command palette 窗口
- 输入关键字
python select
并找到Python: Select Interpreter
一项, 点击该项并在随后弹出的 Python 解释器列表中选择目标虚拟环境中的解释器(若目标虚拟环境未列出,则需要手工输入解释器的路径)
使用 VS Code 编写代码
- 新建一个文件夹
- 将文件夹拖入到VS code 窗口
- 创建py文件
open folder -> new file 文件名:demo_rqdatac.py
- 使用rqdatac 查看平安银行日线数据
文件中输入以下代码:
import rqdatac
rqdatac.init()
print(rqdatac.get_price("000001.XSHE"))
- 运行rqalpha-plus 生成样例策略并运行
运行样例策略需要的命令如下 (假设conda环境名为py35)
conda activate py35
pip install rqsdk -i https://pypi.douban.com/simple/
rqsdk install rqalpha-plus
rqsdk download-data
rqalpha-plus examples
rqalpha-plus run -f examples/buy_and_hold.py -s 2018-01-01 -e 2018-05-31 -fq 1m --plot --account stock 1000000
命令对应作用如下:
- 激活名为 py35 的 conda环境,如果没有则输入conda create -n py35
- 安装 rqsdk和rqalpha-plus
- 生成样例策略文件夹
- 使用 examples 的 buy_and_hold.py 策略启动回测
用debug方式运行回测
launch.json配置如下
{
// 使用 IntelliSense 了解相关属性。
// 悬停以查看现有属性的描述。
// 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "Python: 模块",
"type": "python",
"request": "launch",
"module": "rqalpha-plus",
"args": ["run", "-f", "examples\\buy_and_hold.py", "-s", "2018-01-01", "-e", "2018-05-31", "-fq", "1m", "--plot", "--account", "stock", "1000000"]
}
]
}
Python Pypi Server
1. 代码打包
要打包代码,首先需要编写自己的代码包。比如你写了一个。py 文件,里面有一些函数啥的,为了方便调用,你需要将代码打包,下次使用时直接调用就好,因此,第一步,将你写的代码打包。
创建一个文件夹,并在该文件夹下创建 __init__.py
文件,然后将你写的。py 文件放到这个文件夹下面就行。
packagename/
|
+-- __init__.py
|
+-- myfunction.py
|
+-- mymorefunction.py
|
+-- ...
|
packagename
为你创建的包名称,myxxx.py
是你写的 python 代码,还有添加个__init__.py
文件(文件内容可以为空).
现在你可以调用这个包了(引入包的路径)
import packagename
2. 符合 pypi 的格式
将上面的文件的目录结构改成如下格式
packagename
|
+-- COPYING.txt
|
+-- README.rst
|
+-- setup.py
|
+-- packagename
. |
. +-- __init__.py
. |
. +-- myscripts1.py
. |
. +-- mysscripts2.py
. |
. +-- mymorescripts.py
. |
.
|
+-- docs/
|
就是将原来的目录深移一层,文件夹的名称一样即可。在第一层目录下创建些特殊文件。 Tips
- COPYING.txt : 可以不要(节约时间,重要的事情先说、简单说)。 就是授权文件,里面是你关于这个包的授权,比如:MIT license,那么你里面放入 MIT License 全文即可,当然,如果你不清楚这个,你完全可以不要这个文件。
- README.rst:就是介绍,可以不要吧(不推荐,要是想让大家用的话还是好好写一写) 这个文件想必研发都应该清楚。如果有,尽量放些东西在这里了,后面如果可能我们会用到它的。
- setup.py:核心文件 这里面的内容后面讲
- docs/(这是个文件夹,存放一些文档的) 这个文件夹你放你的 documents 吧,不过要用心写文档真是个难事,所以这个文件夹基本是不存在的——为自己的懒惰可耻一把。
**setup.py **的样例
# coding: utf-8
import codecs
import os
import sys
try:
from setuptools import setup
except:
from distutils.core import setup
"""
打包的用的 setup 必须引入,
"""
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import sys
if sys.version_info < (2, 5):
sys.exit('Python 2.5 or greater is required.')
try:
from setuptools import setup
except ImportError:
from distutils.core import setup
import SendMoney
with open('README.rst', 'rb') as fp:
readme = fp.read()
# 版本号,自己随便写
VERSION = "1.0.7"
LICENSE = "MIT"
setup(
name='<项目的名称>',
version=VERSION,
description=(
'<项目的简单描述>'
),
long_description=readme,
author='<你的名字>',
author_email='<你的邮件地址>',
maintainer='<维护人员的名字>',
maintainer_email='<维护人员的邮件地址',
license=LICENSE,
packages=find_packages(),
platforms=["all"],
url='<项目的网址,我一般都是 github 的 url>',
install_requires=[
"beautifulsoup4",
lxml_requirement
],
classifiers=[
'Development Status :: 4 - Beta',
'Operating System :: OS Independent',
'Intended Audience :: Developers',
'License :: OSI Approved :: BSD License',
'Programming Language :: Python',
'Programming Language :: Python :: Implementation',
'Programming Language :: Python :: 2',
'Programming Language :: Python :: 2.7',
'Programming Language :: Python :: 3',
'Programming Language :: Python :: 3.4',
'Programming Language :: Python :: 3.5',
'Programming Language :: Python :: 3.6',
'Topic :: Software Development :: Libraries'
],
)
# URL 你这个包的项目地址,如果有,给一个吧,没有你直接填写在 PyPI 你这个包的地址也是可以的
# INSTALL_REQUIRES 模块所依赖的 python 模块
# 以上字段不需要都包含
文中的 classifiers 的内容并不是随便填写的,你需要参照本文参考文档中的 PyPI Classifiers 来写
3、开始使用 Distutils 进行打包
为了保证效果,在打包之前我们可以验证 setup.py 的正确性,执行下面的代码
python setup.py check
输出一般是 running check 如果有错误或者警告,就会在此之后显示 没有任何显示表示 Distutils 认可你这个 setup.py 文件。
如果没有问题,那么就可以正式打包,执行下面的代码:
python setup.py sdist
执行完成后,会在顶层目录下生成 dist 目录和 egg 目录
打包完成后就可以准备将打包好的模块上传到 pypi 了,首先你需要在 pypi 上进行注册
注册完成后,你需要在本地创建好 pypi 的配置文件,不然有可能会出现使用 http 无法上传到 pypi 的问题
在用户目录下创建。pypirc 文件,文件的内容如下
window 用户创建.pypirc
可以命名为.pypirc.
位置示例:C:\Users\admin\.pypirc.
[distutils]
index-servers=pypi
[pypi]
repository = https://upload.pypi.org/legacy/
username = <username>
password = <password>
完成后运行:
python setup.py register sdist upload
最后出现Server response (200): OK
就是成功了,可以去 pypi 上查看自己发布的包
包到这里,就完成了上传 PyPI 的工作了。你如果要用,安装下就好:
pip install packagename
这个过程还是很顺利的,以后多尝试,出现问题再补充!
作者:snowy_sunny 链接:https://www.jianshu.com/p/be91c70adb27
RQPro2.0 本地环境与 VScode 集成
RQPro2.0 与 VS code 的集成
安装 Python Extensions
- 点击
install
安装 - 安装后重启 VS code
获取 rqpro python 环境路径
本机的 rqalpha python 环境路径为 D:\Program Files\RQPro\rqalpha\python.exe
新建项目
- 新建一个文件夹
- 将文件夹拖入到 VS code 窗口
- 创建一个。py 文件
配置 python 环境
如果不能选择此 python
需要做如下修改
- 选择项目文件夹下
.vscode
文件夹下 settings.json 文件 (没有文件或文件夹则创建) - 将"python.pythonPath"的值改为 python.exe 路径(注意双反斜杠转义)
使用 rqdatac 与 rqfactor
输入下列代码
#!/usr/bin/python3
# encoding: utf-8
import pandas as pd
import rqdatac
import rqfactor
from rqfactor.execute.engine_data_source import FactorEngineDataSource
from rqfactor.engine import FactorExecutionEngine
rqdatac.init() # 需要账号密码 请参照 rqdata 文档
data_source_path = r'D:\data\rqpro\bundle' # RQPro2.0 - 个人设置 - 数据下载路径
_engine_data_source = FactorEngineDataSource(data_source_path)
engine = FactorExecutionEngine(_engine_data_source)
factor = rqfactor.Factor('close')
order_book_ids = rqdatac.index_components('000300.XSHG')
end_date = pd.Timestamp('20190910')
result = engine.get_multiple(factor, order_book_ids, end_date, 1)
print(result.all())
点击右上角绿色三角形运行 python 代码
运行 RQAalpha 回测
在 .vscode
文件夹下 launch.json
中输入如下代码:
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "rqalpha_plus",
"type": "python",
"request": "launch",
"module": "rqalpha_plus",
"args": [
"run", "-s", "2015-03-01", "-e", "2015-05-01",
"-f", "${file}",
"--account", "stock", "10000", "--frequency", "1d", "--benchmark", "000300.XSHG",
"--commission-multiplier", "1", "--margin-multiplier", "1", "--matching-type", "current_bar", "--slippage", "0"
],
"env": {"PYTHONIOENCODING": "utf-8"}
}
]
}
- 选择策略文件 使用 debug 模式运行
Sphinx 编译报错 nonlocal open_cite_tag
- 线上自动编译时出现错误 SyntaxError: invalid syntax
- 谷歌上搜
nonlocal open_cite_tag
没有任何相关信息
Running Sphinx v1.7.9
loading translations [zh_CN]... done
Traceback (most recent call last):
File "/home/docs/checkouts/readthedocs.org/user_builds/rqalpha/envs/develop/local/lib/python2.7/site-packages/sphinx/cmdline.py", line 303, in main
args.warningiserror, args.tags, args.verbosity, args.jobs)
File "/home/docs/checkouts/readthedocs.org/user_builds/rqalpha/envs/develop/local/lib/python2.7/site-packages/sphinx/application.py", line 191, in __init__
self.setup_extension(extension)
File "/home/docs/checkouts/readthedocs.org/user_builds/rqalpha/envs/develop/local/lib/python2.7/site-packages/sphinx/application.py", line 411, in setup_extension
self.registry.load_extension(self, extname)
File "/home/docs/checkouts/readthedocs.org/user_builds/rqalpha/envs/develop/local/lib/python2.7/site-packages/sphinx/registry.py", line 315, in load_extension
mod = __import__(extname, None, None, ['setup'])
File "/home/docs/checkouts/readthedocs.org/user_builds/rqalpha/envs/develop/local/lib/python2.7/site-packages/nbsphinx.py", line 1088
nonlocal open_cite_tag
^
SyntaxError: invalid syntax
Exception occurred:
File "/home/docs/checkouts/readthedocs.org/user_builds/rqalpha/envs/develop/local/lib/python2.7/site-packages/sphinx/registry.py", line 315, in load_extension
mod = __import__(extname, None, None, ['setup'])
File "/home/docs/checkouts/readthedocs.org/user_builds/rqalpha/envs/develop/local/lib/python2.7/site-packages/nbsphinx.py", line 1088
nonlocal open_cite_tag
^
SyntaxError: invalid syntax
The full traceback has been saved in /tmp/sphinx-err-cnpEVe.log, if you want to report the issue to the developers.
Please also report this if it was a user error, so that a better error message can be provided next time.
A bug report can be filed in the tracker at https://github.com/sphinx-doc/sphinx/issues. Thanks!
对照后发现 nbsphinx ==0.3.5 时会成功 requirements.txt 文件加上版本限制就 ok
- cat requirements.txt
Sphinx
watchdog
sphinx_rtd_theme
nbsphinx ==0.3.5
jupyter_client