cnbuddy成长日志 #1

in #cn7 years ago (edited)

最近两天cnbuddy的alpha版终于上线了。之前忙于各种调试,没有抽出时间写帖子。现在终于可以喘口气,记录一下cnbuddy的成长日志了。

第一次接触steem api的时候没有任何头绪,就随便选了个python版拿来用了——也是因为之前一直在用python,所以估计会比较容易上手。无奈安装的过程一波三折,才导致了后来向node.js的迁移。总的来说,所谓工欲善其事,必先利其器,开发环境准备好了,才能开始码字的么。

Python版的steem api,在windows下我无论如何都无法成功安装pycrypto和scrypt两个包。到网上查了查,说是跟SSL和加密有关系,这我忍了。还有说依赖组件是VS2010写的、用VS2015不能成功编译云云。什么玩意~~索性废了瘟到死吧。本人手边没有苹果啃,所以选了Linux,后来到实验室里搞了台iMac配置了一下,发现这里也能顺利安装——万恶的瘟实啊。哪位大神懂得解决方案的话,请不吝赐教啊。

Windows还是要的,所以我就搞起了win 10新版本里的linux子系统(顺便哆罗嗦一句17年的秋季更新里这一功能已经是正式版了,之前还是beta版)。感兴趣的同学跟着我做,还能图形界面哦——开始菜单-设置-更新-左侧“开发者选项”-中间“开发人员模式”-确定后重启-桌面按Win+X-程序与功能-左侧“Windows功能”-下拉到最后“Linux子系统”。名词是随便翻译的,凑合看就好,因为我用了英文系统。这一串下来,我们就完成了 开发steem小机器人 之前第0步 配置开发环境 之前的第-1步 安装linux系统 之前的第-2步 启用linux子系统 的折腾了。

下一步:打开命令行,输入lxrun /install,或者直接bash,windows就开始下载安装ubuntu了(注意我之前一直说的是linux,现在变成了ubuntu,这是因为windows支持的linux子系统不只是ubuntu,我们还可以换成debian、suse等等等等的啦。你要是还没晕,那就可以跟着苦逼程序员继续苦逼程序员的苦逼程序员之旅了(⊙o⊙))。哪天你玩腻了linux子系统(怎么又成了linux?!),输入lxrun /uninstall /full就可以彻底删除它,或者只输入lxrun /uninstall卸载,然后到%USERPROFILE%\AppData\Local\lxss找你的数据文件。不要认为往这个位置Ctrl-V文件就可以在子系统里使用,这里面有文件权限的问题,导致子系统里不会同步文件的修改。另外这个子系统只是个最小安装版,而且它与宿主windows共享资源。比如两者共用同一IP地址和端口号,所以如果在两个系统之一里面启动了web服务的话,在另一个系统下的浏览器中可以直接访问该服务。有用Django、Ruby on Rails或者Express开发过网站的朋友都明白的——为什么是这三个?因为我只用过这三个……

没完没了的再下一步(天地良心,上一步只有个lxrun /install是干货),使用图形界面。百度一下VcXsrv在SourceForge里的下载链接,当一个到windows里安装上,记得中间选上“添加XLaunch快捷方式”,其它一路默认,然后启动,中间有Display number时写负一的阿拉伯数字翻译(what the … ?),表示自动选择的意思。再到ubuntu里输入一句命令,echo "export DISPLAY=:0.0" >> ~/.bashrc,重启——关闭所有的ubuntu窗口,windows就把子系统关了,然后再打开。安装个firefox,然后在bash窗口(就是ubuntu的命令行)里输入firefox启动,怎么样?火狐的窗口就出现在windows的任务栏里了。注意此处有bug:比如你启动了gedit,它的窗口不能最大化,也不要尝试拖动边框修改尺寸。慢着,你已经去试了?

好吧,这么多字码,你已经看困了,其实我也是……现在安装steem怎么现在才开始我的神啊。virtualenv,用过的都说好。Steem官方python叫steem-python(这不废话么),安装时要求python版本在3.6以上——这是它10月11号更新的0.18.103版里的新要求,之前一版都只是要python 3.5。先来段代码,然后再来段唠叨:

sudo add-apt-repository ppa:jonathonf/python-3.6
sudo apt-get update
sudo apt-get install -y build-essential python3.6 python3-pip libssl-dev libffi-dev mysql-server mysql-client
sudo pip3 install -U pip vitualenv
virtualenv -p python3.6 temp && source temp/bin/activate
    pip install steem
    deactivate && rm -rf temp
sudo pip3 install steem
virtualenv -p python3 --system-site-packages python3
source python3/bin/activate
    pip install piston-lib natsort mysql-connector-python-rf apscheduler PyMongo SQLAlchemy
deactivate

我们要安装3.6版的python,前两句半就都是干这个的。

第三句中间,libssl-dev libffi-dev,这就是与SSL加密相关的库,在windows里我没解决的就是它们。

第三句后面,MySQL,怎么能没有这个?!还有比这更好用的数据库么?!有,所以移植到node.js里面就换mongdoDB了嘛——此处打脸无穷下……

第四句往后都是在折腾往virtualenv里安steem。不用虚拟环境也行,你会发现安装steem时会有setuptools的错误。怎么会?Python里带了setuptools啊?让我来告诉你:还是入坑virtualenv吧……因为我也没解决得了。有说法是要卸载某某组件后强制安装,结果我没试验成功。

先安个python 3.6版叫temp的虚拟环境来安装steem。为什么叫temp,因为temp中文的意思叫卸磨杀驴(⊙o⊙)。Steem要求python版本在3.6以上,但是你在3.6里pip install -U steem是不会成功嘀muahaha~~,即便第三句中间那两个库安装成功了,pycrypto和scrypt还是安不上——等我一下我去拿把刀砍了谁家的那个小谁……

杀完了驴,日子还是得过。现在在系统全局下安装steem。盯住bash输出:这个包下载完了以后就会卡住,大概有个一分钟,然后你就会惊奇地发现,它在全局下安装成功了!这python不是3.5么?!等等,我还能再砍几刀……

对于我们大virtualenv党来说,全局怎么能接受得了。创建个python 3.6的虚拟环境并导入全局安装的包,这时运行个python -c "from steem import Steem"看,是不是心凉了半截?让我来悄悄提醒你:看倒三行,解决方案就是用回python 3.5。我刀呢?谁把我刀拿走了……

这就完了么?没有……用了一段时间后我发现,用这个steem官方python库查询一下贴子还好,但想成功点赞办不到(至于忘记用posting key进行操作这种错误我还是不会犯的)……不知大神们谁有好的解决办法……临时方案是使用piston代替官方库,即倒二句里的第一个库。

简单介绍一下后续的几个库:natsort提供按照自然方式排序的算法,比如“zxu3@ualbertca”能够排在“[email protected]”前面;mysql-connector-python-rf是python的MySQL驱动,有它才能在python代码中操作MySQL数据库;apscheduler实现多线程方法;PyMongo和SQLAlchemy是apscheduler的依赖库。

总之,至此终于能够愉(ku)快(bi)地耕码了。趁着这股子热情,赶紧洗洗睡吧(^o^)/。

感谢大家百忙之中阅读这篇水文。抛砖引玉,并且希望能够给有兴趣写写程序的朋友们一点帮助,从而少走一些我所经历的弯路。同时欢迎大神们指点迷津,让我与cnbuddy同时成长!谢谢!


@xuzhen 是公众帐号机器人 @cnbuddy 的开发者。感谢您的宝贵时间,如果喜欢我的作品,欢迎upvote, follow, and resteem @xuzhen.
Thanks for your time. If you like my posts, welcome to upvote, follow, and resteem @xuzhen.

Sort:  

Calling @originalworks :)
img credz: pixabay.com
Nice, you got a 4.0% @minnowbooster upgoat, thanks to @shenchensucc
Want a boost? Minnowbooster's got your back!

The @OriginalWorks bot has determined this post by @xuzhen to be original material and upvoted(2%) it!

ezgif.com-resize.gif

To call @OriginalWorks, simply reply to any post with @originalworks or !originalworks in your message!

@xuzhen你好!感谢你作为cn小伙伴的一员。我是cn区点赞机器人 @cnbuddy,旨在团结cn区成员,提供cn区动态和助力cn区发展

我的建议是单独用个ubuntu系统捣鼓这个,本地只用来测试,机器人放到VPS上,另外文章排版可以再优化一下..看着好乱..

独立的ubuntu嘛。。。我的电脑比较破,虚拟机跑不动;双系统的话切换又太麻烦,开机慢,还必须经常跑windows。。。所以才这么个搞法。排版确实是个问题。下次发贴少写字,多加图、代码,估计会好一些。谢谢你的建议,布局稍微改动了一点,看上去应该好一些了。

其实你测试的话,买个树莓派就可以,哈哈。

嗯嗯,可以试试

Well done. Thanks for the contribution to CN community.

Thanks so much ~

支持。。。
长远考虑,还是得上LINUX

对的对的,哈哈

希望机器人茁壮成长。

谢谢关注!

我也是倒腾了好久,最后选择ubuntu搞定steem库的安装

看来大家都遇到了各种困难啊。以后多交流,互相学习,共同进步哈。

恭喜你!您的这篇文章入选 @justyy 今日榜单 【优秀被错过的文章】, 请再接再厉!

Congratulations! This post has been selected by @justyy as today's 【Good Posts You May Miss】, Steem On!

推一個,寒假有時間來寫寫看!

Coin Marketplace

STEEM 0.16
TRX 0.13
JST 0.027
BTC 60220.70
ETH 2591.99
USDT 1.00
SBD 2.55