
python开发
三头六臂的小白
这个作者很懒,什么都没留下…
展开
-
错误 No module named ‘_bz2’ 的解决方案
错误场景: 在python 安装 pandas 和 sqlalchemy 以后,运行脚本时候,提示“No module named ‘_bz2’” 的相关解决方案原创 2023-01-12 10:33:09 · 17333 阅读 · 3 评论 -
使用docker版paddle镜像 提示 You are using GPU version Paddle, but your CUDA device is not set properly
1. 上网搜 对应 错误的代码,发现多是说对应的paddle版本 和系统中的 cuda 和 cudnn ,但是要注意,这里我们用的是官方的docker 镜像,其实并不存在 paddle 和 cuda 和 cudnn 版本差异的问题,这三个的版本兼容是官方测试过的。6. 查证发现,使用yum 默认安装的docker 版本非常低,上网找对应的安装新版docker 的方法就解决了。你的 docker 是默认用 apt 或者 yum 安装的,不是最新的docker 版本,安装最新版本的docker就可以了。...原创 2022-08-29 14:34:57 · 2145 阅读 · 1 评论 -
Pandas 中df.loc[ ] 与 df.iloc[ ] 的用法与异同详解
让你了解 df.loc[ ] 与df.iloc[ ] 的用法,理清方括号里到底是选择的index 还是 列名,还是序号,用例子对比iloc 与loc的方法,养成相对良好的pandas选取习惯原创 2022-01-04 16:14:17 · 5346 阅读 · 1 评论 -
Docker 内部服务外部无法访问的解决方法(容器内部能访问,外部不能访问)
先说结论: 监听端口时候 不要用 localhost 而是用 0.0.0.0 (至少适用于socket 和 flask)在Docker 容器内的localhost/127.0.0.1指的是容器内部任意主机访问容器,或者主机内其他容器访问这个容器 都是外部访问。因此在容器内的容器监听端口时候 如果监听的是 localhost/127.0.0.1:xxx 的话,即使是将这个xxx端口映射到host主机了,对容器内来说,也不是localhost访问,也是外部访问,这点要注意。...原创 2021-09-17 18:02:13 · 4777 阅读 · 0 评论 -
flask-apscheduler 使用sqlite3进行持久化存储的配置(非纯apscheduler)解决flask-apscheduler无法持久化存储job的问题
先说结论: 在flask 中配置 "SCHEDULER_JOBSTORES" 变量 例子如下:SCHEDULER_JOBSTORES = { 'default': SQLAlchemyJobStore(url='sqlite:///jobstores.db') }在apscheduler 创建之前 flask 的app 实例载入配置即可DEBUG 过程简述~1. 纯apscheduler 在使用持久化时候可以使用多种方法 举一个例子:jobstores..原创 2021-08-17 16:52:39 · 1785 阅读 · 0 评论 -
flask 处理 multipart/mixed 类型数据 (案例为处理java okhttp包post上传图片)
先说结论:1. 通过 request.stream 配合 readline 来读取 混合在头部的相关数据,2. 最后 再使用 request.data 或者 request.stream来读取剩下的数据/流:这里假设你已经了解如何通过flask处理通过file形式上传的图片的相关知识:request 模块上传图片代码块def sendImg(img_path, img_name, img_type='image/jpeg'): url = 'http://127.0.0.原创 2021-08-10 15:27:37 · 1322 阅读 · 0 评论 -
Flask-apscheduler 无法启动工作,报错Run time of job was missed by... 解决方法
1. 环境与背景,使用Flask 还有flask-apscheduler flask-sqlalchemy 这几个东西重构了一个自己版本的https://github.com/guomaoqiu/JobCenter工具,用来管理自己的工作,因为应用使用了flask-sqlalchemy 所以很多操作要在 flask的app_context中运行,就使用了flask-apscheduler,遇到了Run time of job xxx was missed by xxx...bug先说结论: fl...原创 2021-07-20 09:36:12 · 2128 阅读 · 0 评论 -
python编写的SFTP文件夹上传工具,文件夹清理工具,简单易用,配置方便
之前写的很多爬虫因为有针对性,不适合分享,最近写了一个上传文件夹的小工具,东西不大,功能尚可,配置还比较方便,打包也很方便分享一下# --coding:utf-8--from paramiko import Transport,SFTPClient,SSHExceptionfrom os import path,listdir,rmdir,removefrom sys import argvfrom time import sleepfrom json import loads# S.原创 2021-03-26 09:45:19 · 389 阅读 · 4 评论 -
使用SFTP时候报错 no acceptable compression (已解决)
这两天用python开发一个用sftp协议上传文件夹的工具,使用 paramiko库。测试都好好的,但是交付以后,使用端反馈报错:Incompatible ssh server ( no acceptable compression )并反馈 远端服务器要求传输时候使用zlib压缩。查了一下paramiko库,并没有使用压缩的相关设置。后来上StackOverflow上有人恰好有同样的问题,大佬回复:改源码:Transport 下的 _preferred_compression=.原创 2021-03-26 09:22:26 · 307 阅读 · 0 评论 -
PyDispatcher 介绍(官网翻译版本)
PyDispatcher简介PyDispatcher为Python程序员提供:" 多个生产者-多个消费者的" 的信号注册和路由服务的多用途基础架构。 这种机制在Python Cookbook 里被高度评价。本项是在多个项目的开发经验基础上总结并加强它(信号机制)。项目主要贡献者是Mike Fletcher ,该项目的一个衍生版被用于django web项目中。PyDispatcher 能做什么:1. 提供中央式的信息传递传递服务(在本程序内将信息传递到目标对象),使你可以注册无限多的从...原创 2021-03-01 17:06:17 · 1561 阅读 · 0 评论 -
Scrapy中engine._download方法调用downloader.fetch时候都发生了什么?scrapy启动流程图(5)
这里就简单说明一点,middleware如果直接返回scrapy的response对象时候,这里downloader大部分下载活动将不会被激活,这里讲的是大部分middle没有返回response对象时候,系统是如何调用downloader的方法进行下载的。...原创 2021-02-07 09:59:13 · 131 阅读 · 0 评论 -
scrapy启动流程图(4)——engine.py的内部运作图(2)
这里订正下上一篇的错误,由于本人疏忽,将request的 弹出处理部分代码遗漏的,下面的流程图中补充了这里真心不建议大家用这个模式去写代码,重复的部分很多,他这里这样写是因为reactor在处理错误时候没法很好的被上一层级别捕获,建议在自己的代码里避免这种写法到这里 engine的全部代码就解析完毕了 下一篇文章事scraper的解析 也不是很麻烦 后面还有downloader,scheduler比较简单建议大家自己看代码...原创 2021-02-04 11:23:20 · 179 阅读 · 0 评论 -
scrapy启动流程图(3)——engine.py的内部运作图(1)
这就是回调地狱!!! 同志们不要学!!!所有的异常和数据处理下载等都被绑在request相关的deferred对象里了本文解释了运行scrapy crawl xxspider命令后,scrapy内部是如何跑的,一步步拆解看从命令行解析到具体调用命令请看:第一篇 《scrapy启动流程图(超详细)——cmdline.py解析》从具体命令到创建crawlerprocess和实例化crawler 请看:第二篇《scrapy启动流程图(2)——crawler的启动流程图》下面的流程图详细.原创 2021-02-03 15:42:53 · 634 阅读 · 1 评论 -
scrapy启动流程图(2)——crawler的启动流程图
这里简单说说明下,当我们使用 scrapy crawl xxspider 时候 发生了如下事情:1. 由setup.py 定义的程序入口 cmdline.py 的 execute() 函数被系统 terminal调用 os.argv里面是这样的数据["cmdline.py","crawl","xxspider"]2.由cmdline.execute 通过一系列解析动作 调用到 Command/crawl.py 并执行run命令 (请看我上一篇 scrapy启动流程图 的文章)3. 有cr...原创 2021-02-02 16:26:23 · 633 阅读 · 0 评论 -
Scrapy Spider源码解读 及继承关系图 方便记忆检索
目前已经将很多 scrapy翻译和解释写到了scrapy的代码里,有兴趣的同学可以去github里看具体的解释scrapy翻译github希望有兴趣的小伙伴也可以一起解释scrapy的代码学了会用100个库不如彻底弄明白一个库你说呢?...原创 2021-01-28 15:52:52 · 198 阅读 · 0 评论 -
scrapy启动流程图(超详细)——cmdline.py解析
图片非常大,请耐心等一下。图片详细介绍了 在使用 "scrapy crawl xxx" 启动命令背后的工作。cmdline.py excute的这里可以看做整个scrapy项目的起点,整体操作围绕着两个部分,一个是setting的配置一个是crawler/crawprocess大部分的需要配置的东西都在setting中传递。带注释的代码:import sysimport osimport optparseimport cProfileimport inspecti..原创 2021-01-19 15:08:14 · 1626 阅读 · 1 评论 -
99%的Python程序员不理解的——Metaclass元编程
Python Metaclasses 元类全文翻译自realpython-mataclass介绍metaprogramming元编程 指的是潜在的对程序行为(指编程语言或者默认解析器的行为)本身进行更改的编程行为,Python支持通过metaclasses元类进行元编程。metaclass元类是在所有python代码运行逻辑背后的比较精深的OOP(面向对象)概念。虽然不论你是否注意到你都在无时无刻使用着metaclass,但绝大多数情况你不用在意metaclass。大多数Python编程者很少或者原创 2021-01-15 09:18:26 · 270 阅读 · 0 评论 -
Scrapy crawler.py 代码详细解析
这里先简单讲一下 scrapy 底层 twisted中的reactor ,他相当于asyncio中loop,deferred相当于 future,crawler 相当于实际执行爬取的类,并管理了自身的启停,接受控制信号和setting配置等。其中Crawler实例 相当于一个实例化的spiderCrawlerRunner 是对crawler的调度,其需要你自己的项目中使用twised框架才有必要了解操作这个类CrawlerProcess 相当于封装了twisted需要的reactor以后的.原创 2021-01-12 17:00:56 · 1626 阅读 · 3 评论 -
生产环境、测试环境、开发环境的快速切换与配置
经常听同事抱怨,从开发环境切换到到测试环境,从测试环境切换到生产环境经常出现配置需要更改,或者特异性的BUG。其实就是不同环境下还是有轻微的差别,比如数据库,MQ的地址,密码配置等,这些在使用或者配置时候没有注意或者遗漏造成的。正好新的项目需要两个环境下来回切换,这里仅仅给个思路:在统一的配置/setting文件中,加入某个文件的判断,当有这个文件时候判定是环境A,没有的时候判断为B...后面所有的配置都可以根据这个文件判断来推断目前的环境import osLOCAL_DEBUG原创 2021-01-05 08:52:23 · 2148 阅读 · 0 评论 -
配置有密码保护的scrapyd服务端及客户端——爬虫的生产环境部署
本文针对scrapy爬虫在调试完成后,怎样部署到linux服务器,以及使用scrapyd-client上传的相关配置做简单总结1.概括:服务端 : nginx+htpasswd(配置访问端口及密码)>>> screen(窗口切换工具,用于将前台守护进程类软件变成后台守护型)+scrapyd(服务端执行scrapy爬虫的相关进程)客户端:安装scrapyd-client 配置 爬虫目录下的scrapy.cfg 文件,使用crontable 和curl 两个工具进行定时访问指定..原创 2020-12-29 15:15:43 · 958 阅读 · 0 评论 -
Scrapy 使用代理隧道爬取HTTPS的BUG
一两年前的代理都是代理池模式的,每次链接时代理IP是自己控制的,没发现问题现在用隧道代理,每个TCP在远端分别用不同的IP代理并返回,自己可以通过设置header的部分字段来通知远端隧道更换IP遇到一个问题,就是我的处理逻辑是爬一段时间,当这个IP被ban掉后换新的IP,但是死活换不了经过debug和查找代理的相关资料发现 要在headers里request.headers['Proxy-Connection'] = "close"request.headers["Connection.原创 2020-12-23 09:15:16 · 3569 阅读 · 0 评论 -
scrapy Use xx[‘xx‘]=xx to set field value BUG记录
在使用Scrapy爬东西时候,给 自己定义的item赋值时候 写成了temp.name = "demoname"这里可以直接理解为item就是dict对象而dict对象应该这样赋值:temp['name']= "demoname"简单的总结 : 把ITEM赋值 从temp.name = "demoname" 改为temp['name']= "demoname" 就可以解决了。...原创 2020-12-22 10:34:54 · 397 阅读 · 0 评论 -
<异步令牌桶> 解决爬虫访问限制,解决aiomysql异步访问时多个task抢占句柄bug
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录什么是令牌桶?一、最简单的:单令牌二、总量限制桶三、水流桶(完整桶)总结什么是令牌桶?用来限制访问频率以及多线程情况下对某一资源访问资格的问题的解决方案:想象一个桶,每次你访问网络时候都要看下桶内是否有剩余的令牌,如果有你可以拿走令牌去访问,没有你就等着令牌投进来再访问。一、最简单的:单令牌class OneToken(): def __init__(self): self.current_toke原创 2020-12-15 16:04:18 · 330 阅读 · 0 评论 -
《Python高级编程》(第二版) ——速查笔记 第10~14章 完结
《Python高级编程》(第二版) ——速查笔记 第10~14章 完结第十章 测试驱动开发 TDD test-driven Development1. 简单的测试介绍2.测试的提高部分3.小结第十一章 优化 一般分析原则与分析技术1. 3个优化原则2. 优化策略3. 查找瓶颈第十二章 优化 一些强大的技术1. 降低复杂度2. 简化3. 使用集合模块4. 架构体系的权衡5. 缓存6. 小结第十三章 并发1. 为何需要并发2. 多线程3. 多进程4. 异步编程5.小结第十四章 有用的设计模式1. 创建型模式 (原创 2020-12-11 11:18:55 · 191 阅读 · 0 评论 -
《Python高级编程》(第二版) ——速查笔记 第7、8、9章
《Python高级编程》(第二版) ——速查笔记 第7、8、9章第七章 使用其他语言开发python扩展1. 使用c/c++ 编写扩展2. 为何使用扩展3. 编写扩展三种方法:1.纯C扩展2. Cython4. 挑战5. 无扩展的动态库接口6.小结第八章 管理代码1. 版本管理2.持续的开发过程1. CI 持续集成2. 持续交付3. 持续部署4. 常用工具5. 常见陷阱3.小结第九章 文档化你的项目1. 7项技术写作规则2. reStructuredText 入门3. 构建文档4. 构建自己的文档集5. 小原创 2020-12-11 11:16:20 · 235 阅读 · 0 评论 -
Httpx(异步的Requests库)实际使用中的一些技巧和心得
简单的说,同步库下的Httpx的用法基本完全等价于Requests库的用法,其中requests的session和Httpx中的client基本都是一个东西。1. 简单的例子:self.client = httpx.AsyncClient(proxies=self.proxylist[0])respond = await self.client.post(url, data=inputdata,headers = headers)在实例化时期先将AsyncClient 建立好,在需要.原创 2020-12-11 10:56:54 · 5954 阅读 · 11 评论 -
python 如何将同步代码改造成异步的
假设 原来的方式是def myfun(): A = fun1() b = fun2(A) return b改造后的异步方法样子是:async def myfun_async(): loop =asyncio.get_event_loop() A = awaitloop.run_in_executor(None,fun1) b =awaitloop.run_in_executor(None,fun2,A) return b...原创 2020-12-07 14:22:06 · 3193 阅读 · 0 评论 -
《Python高级编程》(第二版) ——速查笔记 第3、4、5、6章
第三章 最佳语法实践——类级别以上1. 子类化内置类型将内置的 list 或者 valueerror等内置类型自行继承,并加上功能,在自己的工作流程中使用自己的类的子类,能更好的实现自己的目标。2. 访问超类中的方法super().xxx() 可以在类内部调用超类的方法, 还可以用super(实例.__class__,实例).xxx()的方法在外部调用实例的超类的方法,单独一个参数的super函数被认为只传了第一个参数,可以调用其类方法(用@classmethod 装饰的)python2 版本的原创 2020-10-29 15:29:29 · 261 阅读 · 1 评论 -
《Python高级编程》 ——速查笔记 第一、二章
Python高级编程——速查笔记 第一、二章Python高级编程 (速查笔记 第一、二章)第一章1. 编译器2. 安装python第二章 **语法的最佳实践**——*低于类级*1. 列表推导式(List comprehensions)2. 迭代器 (Iterators)和生成器(generators)3.装饰器(Decorators)4.上下文管理器 (contextlib 和 with)这本《Python 高级编程》第二版 是为数不多的python高级编程技巧、知识总结,刚刚读了两章就收获颇丰,在本原创 2020-10-22 15:54:18 · 209 阅读 · 0 评论 -
最新:linux下最新libsodium安装方法 (debian ubuntu20.04测试通过 )
网上很多人发了如何在ubuntu上面安装libsodium的方法,亲测不行。正确方法 1. 下载最新版libsodium文件:wgethttps://download.libsodium.org/libsodium/releases/LATEST.tar.gz2.解压文件 tar xfLATEST.tar.gz3. 进入解压后生成的文件夹 我的是 xxx/libsodium-stable/4. 运行命令 ./configure5. 运行命令 make && m...原创 2020-10-20 10:57:04 · 6032 阅读 · 2 评论 -
linux 已经创建的容器container 如何挂载共享文件夹 如何更改端口 (docker)
最近因为公司的项目在部署时候很困难(保密需求,需要跳板机)我们开发的同学根本无法调试,就想自己搭建一个编译环境进行编译和测试。这里使用的是 docker 中 centos 6.6版本的基础镜像,自己安装的python3环境,如何安装环境在上一篇文章已经完整介绍过了,这里不多赘述。当我费劲千辛万苦弄完docker的container环境,却发现几乎没交教程教如何在已有的container里开启共享文件夹,这里鸣谢:1.分享如何挂载文件的博主(hjun169):https://blog.51cto.原创 2020-09-04 16:24:31 · 3851 阅读 · 3 评论 -
Centos 6/7 下搭建完整的 python3 开发环境 (总结及心得)
1.原因:因为公司的环境是红帽 对应的centos是6.5安装PYTHON3的环境异常艰难 这里用的是docker提供的 centos6.6总体分两步 1. 安装openssl 的 1.1.1 版本 2. 安装python3.8.5 编译1.1安装相应的依赖:yum install -y zlib zlib-dev openssl-devel sqlite-devel bzip2-devel libffi libffi-devel gcc g...原创 2020-09-03 17:37:45 · 495 阅读 · 0 评论 -
(Python)利用爬虫技术进行网页数据转发——难点总结(笔记)
最近一个项目简单的说就是用flask做接口,接口的数据要求实时爬取且不用缓存(正确性考量):难点1:login项目开始时后对requests库了解不深,导致很多是自己的方法参数明显有问题,导致请求不正确。既然需要login 那么一定是需要调用request.post的,其中的header 和部分参数需要手动生成,然后拼装后发送给目标站上面说的自己拼装header有很大问题,主要是不能保证每次发送的时候数据都是想要的(指定的header状态需要自己维护 比较费劲)这里记录第一个难点 就是使原创 2020-08-26 16:14:57 · 733 阅读 · 0 评论 -
YOLOv3 史上最强思维导图 !!! yolo一看就懂的流程图!!! 地表最强代码解析 哈哈哈
基于TF 1.5版本的 YOLOV3其中向下的箭头很多实在是懒得打,基本对齐的下面都有向下的箭头。代码中SPP池化层跟我了解到的标准SPP的定义不太一样,这里我按照代码写的,那个SPP最后是concat 不是简单加法!!!(一个疑问 SPP后的东西 又跟inputs concat了 那不又不是定长了...)绝大部分卷积层的padding 为 same 只有 darknet53 中 有三个部分有 valid padding的(红快标出来了)整个结构都是残差的结构 其中 SPP和detect_...原创 2020-05-18 13:12:46 · 3653 阅读 · 0 评论 -
Docker下 利用ubuntu 官方镜像制作python3 运行环境的容器遇到的坑
1 .dockerubuntu 原版的镜像内是不用sudo的因为在root用户下工作。网速教程上的sudo可省略。2.apt-get先安装python3再安装python3-pip会安装对应ubuntu版本的python3.x版本 如需自定义版本搜"docker ubuntu 安装 python3"很多攻略3.安装python库时候要用pip3而不是pip4.当python运行提示缺“PIL” 时候 pip3需要装 Pillow而不是PIL 缺z...原创 2020-05-12 12:00:21 · 995 阅读 · 0 评论 -
GPT-2——代码的实践一:样例代码分析(无采样序列生成)generate_unconditional_samples.py 中数据流动图解
相信肯定很多小伙伴都对GPT-2高性能感兴趣,但是看了它原著的代码有点望而却步...本人也是为这个数据最终的流动困扰了几天,今天把它整理一个思维导图,分好几个层级 希望对大家有帮助GPT-2generate_unconditional_samples.py+sample.py 中数据流动示意图gg流程图这里主要解释了 在模型中 context prev outp...原创 2020-05-07 23:43:10 · 1500 阅读 · 0 评论 -
NLP Transformer 模型中 BPE(byte pair encoding 英文分词)详解 GPT-2 中的实现
NLP 中Tranformer模型的BPE详解(GPT-2)简单解释概念 BPE—byte pair encoding:GPT-2 中的实现gpt-2 代码解读简单解释概念 BPE—byte pair encoding:Transformer NLP 预训练模型都通过 embedding 词典来表征词义,当遇见没见过的词的时候以前是用"< u nk>"代替,这样会造成对新事物(新...原创 2020-05-07 10:43:07 · 5856 阅读 · 2 评论 -
Tensorflow-gpu 2.x 版本安装后 提示imp.py line 342, in load_dynamic return _load(spec) ImportError: DLL...
环境描述 :使用X64 平台下 python3.7 下安装 tensorflow-gpu 2.1版本,安装完后 导入提示imp.py line 342, in load_dynamic return _load(spec) ImportError: DLL文件加载错误。1.确认所装CUDA 和 CUDnn 是否符合相对应版本 我的是 10.1以及对应的CUDNN2.确认相关path已经...原创 2020-04-28 22:42:01 · 1998 阅读 · 1 评论 -
MongoDB 安装为系统服务,并允许外部链接设置(WIN10平台)
网上很多方法,试过后有些问题,外网没有成功访问,查询半天,已解决:请设置以管理员身份运行CMD,下面都是用管理员权限运行CMD,不然会有些不能读写bug。1.卸载相关服务(如果服务中没有MongDB 可以跳过本部分):net stop MongoDB 停止服务sc delete MongoDB 删除服务2.在Mongdb的安装目录中,新建mongod.cfg 我自己的目...原创 2019-08-19 14:47:15 · 1129 阅读 · 0 评论