
python
走错路的程序员
爱程序,爱技术.更爱老婆和骇子.
展开
-
Python虚拟环境导出包安装到另一台电脑的方法
当这样建立了虚拟环境后,在其中安装的包很多,也很费时间,你想将这个MyApp放到其他电脑上去开发,是不是直接复制MyApp文件夹就可以了呢?因为在建立虚拟环境时,虚拟环境中的python.exe, pip.exe…等一些文件会“硬编码”,记录的是绝对路径,放到其他电脑后,因为路径不同会出错!所以采用的方法是导出安装的包,在另一台电脑新建虚拟环境,再将包导入到新建的虚拟环境。Python虚拟环境导出包安装到另一台电脑的方法。环境:Windows 版 Python。为防止文章丢失,特此转载。转载 2023-03-09 09:46:13 · 973 阅读 · 0 评论 -
numpy 索引直接修改矩形区域的中的数值
黄色区域数值为1,就是img[0200,100600]=1修改的部分.其余为初始化的0。numpy索引直接修改矩形区域的中的数值。原创 2022-07-28 17:33:59 · 593 阅读 · 0 评论 -
python linux 上 RS485通信 Modbus协议
如题:CRC计算参考了这篇文章. https://blog.youkuaiyun.com/dzahzhcz/article/details/103759813import structimport platformimport timesysstr = platform.system()#RS485文件的通信地址,在开发板上是/dev/ttysWK0if(sysstr=="Windows"): RS485FileName = "d:/RS485.txt"elif(sysstr =="Lin原创 2022-03-08 14:59:11 · 3276 阅读 · 0 评论 -
python tkinter 打开摄像头并解决闪烁问题
from tkinter import *from PIL import Image,ImageTkfrom tkinter import ttkimport osimport platformimport cv2import threading capture = cv2.VideoCapture(0) def loopCapture(): global capture global imgCanvas global win # imgp原创 2022-03-07 10:57:28 · 1640 阅读 · 3 评论 -
记录一次 torch.cuda.is_available()==false的问题解决过程
今天发现 torch.cuda.is_available()==false 无法初始化GPU进行训练.于是着手开始检查torch的版本和cuda的版本检查torch的版本输入python>>> import torch>>> print(torch.__version__)如果带有cpu字样说明你装的不是 gpu版本的, 需要重新安装pytorch我的是cpu版本的. 于是重装.再次测试输入python>>> import torc原创 2021-11-08 17:01:03 · 4877 阅读 · 5 评论 -
再写一篇如何正确创建虚拟python环境,简洁易懂版
经过长达一年的反复安装和卸载开发环境, 得出一些结论和比较.供大家参考首先是conda和venv+pip的比较.我最开始用的是conda, 但是永久了之后发现conda并不是那么方便. 尤其是在国内环境下.conda的缺点,1. 每次执行安装库, 都需要一段比较长的开始收集资料的时间, 这一点上pip就快很多.2. 下载速度有限3. 下载的包不知道哪里下载.相比之下venv + pip的优点1.venv的虚拟环境是可以放在项目目录下面的. 比较方便迁移和同事间共享, 项目之间绿色无污染,原创 2021-10-25 09:42:40 · 407 阅读 · 0 评论 -
查看TensorRT的版本
TensorRT 的版本 需要使用查看.dpkg -l | grep TensorRT原创 2021-10-15 14:32:23 · 7278 阅读 · 0 评论 -
TensorFlow-gpu ImportError: DLL load failed: 找不到指定的程序。
Traceback (most recent call last): File "f:/project/yolov5/modelconvert/onnx2rknn.py", line 10, in <module> rknn = RKNN() File "F:\project\yolov5\.env_yolov5_5.0\lib\site-packages\rknn\api\rknn.py", line 47, in __init__ self.config() .原创 2021-09-24 14:50:29 · 306 阅读 · 0 评论 -
python websocket服务器端 定时主动发送消息
参考文章: https://blog.youkuaiyun.com/xietansheng/article/details/115558069服务器端import asyncioimport websocketsimport asyncioimport websocketsfrom websockets.legacy.server import WebSocketServerProtocolimport jsonimport timeimport threadingclients={}async原创 2021-09-17 14:26:07 · 3332 阅读 · 1 评论 -
python连接RabbitMQ入门,千万不要用这个
额, 首先抱歉, 不是入门, 只是为了防止各位新手用错了框架。 方便大家搜索。RabbitMQ本来就是个很简单的事情, 收消息和发消息而已。如果你不小心用错了框架那么遇到的问题可是一大堆一大堆的。首先在python下, 一定不要使用 pika 这个框架,它是线程非安全的 , 这个框架不是线程安全的, 一但上线,动不动就掉线的情况, 让你崩溃。 好在换个框架也是很简单的事情。 那么应该用那个框架的呢 我经过实际检验最终还是 rabbitpy 比较优秀和稳定。切记一定要用 rabbitpy,原创 2021-09-12 16:31:27 · 390 阅读 · 0 评论 -
python3.7.10 如何正确的创建虚拟环境 venv
使用python 创建虚拟环境$ python3 -m venv vvv报错内容如下Error: Command ‘[’/home/*****/learning_log_env/bin/python’, ‘-Im’, ‘ensurepip’, ‘–upgrade’, ‘–default-pip’]’ returned non-zero exit status 1使用命令行:$ python3 -m venv --without-pip --system-site-packages v原创 2021-06-29 18:25:09 · 4649 阅读 · 1 评论 -
java.net.SocketException Connection reset by peer: socket write error 原因一例
工作需要, java做服务器端, python做客户端一个服务器端对应多个python客户端… 中间用socket通信.(注意如果你的是tomcat服务器报错, 本文或许不适用你的问题. 我这个是手写的socket通信)刚开始报错如下.Caused by: java.net.SocketException: Connection reset by peer: socket write error 虽然报错但是数据确实收到了. 并未影响系统运行. 但是每天报这个错误也不是个事, 于是决原创 2021-06-28 09:27:15 · 8385 阅读 · 0 评论 -
pytorch arm平台, aarch64 pip 快速安装
pytorch 官方并未提供 arm平台的安装包.于是按照官方页面提供的命令是无论如何也无法安装成功的.只要你的CPU用的ARM芯片. 那么无论你是什么操作系统, Liunx, windows,maxos 都不行解决方法有2个,第一个是下载源代码然后进行手动编译.(此方法太过复杂和耗时, 没点耐心搞不好.)第二个是用社区其它人编译好的版本. 这个方法就非常简单了.请参考: https://github.com/KumaTea/pytorch-aarch64得感谢 KumaTea使用方法也很简原创 2021-06-24 16:25:49 · 8979 阅读 · 14 评论 -
numpy多维数组变成1维数组的2个方法
>>> import numpy as np>>> a=np.random.randint(1,10,15).reshape(3,5)>>> a #输出array([[4, 4, 1, 8, 4], [7, 5, 8, 8, 1], [5, 5, 1, 2, 7]])>>> c=np.bincount(a.flat) # 这是一个方法. 直接调用 a.flat , 这返回的是一个迭代器. 不是数据原创 2021-06-10 14:37:58 · 2182 阅读 · 0 评论 -
vscode使用 python venv环境的编译问题.
为管理项目环境, 使用了python3自带的 venv创建的虚拟环境.命令如下python -m venv 虚拟环境名选择 “输入解释器路径” -> 选择 虚拟环境下的python3的路径, 一般是在 “虚拟环境名/bin/python3”这样编辑器和编译器就都正确了....原创 2021-06-09 17:19:46 · 926 阅读 · 2 评论 -
NPU跑AI模型的问题记录.
工作需要, 买了萤火虫的NPU开发板. RK3399Pro1.在Linux Ubuntu 中,Vscode 不能找到模块. RKNN原因是, linux中默认装了python 2.7 , 而RKNN是装在python 3.5下的.解决方法很简单, 改一下vscode 的解释器即可如果改了不管用, 可以在代码中的第一行加上 , 然后保存的时候会有个蓝色的提示弹出来. 请注意, 点击即可.#!/usr/bin/python3.5# -*- coding:utf-8 -*-第2个问题. 报原创 2021-06-09 17:09:26 · 1173 阅读 · 1 评论 -
Ubuntu18.04安装TensorFlow 遇到错误 No such file or directory: ‘c++‘: ‘c++‘
报错内容如下.Collecting grpcio>=1.8.6 (from tensorflow==1.11.0) Using cached https://files.pythonhosted.org/packages/8c/34/7dafc9052bd9b2b41c5a8912aeeca01e179d16de17e9c275633d4b807330/grpcio-1.38.0.tar.gz Complete output from command python setup.py eg原创 2021-06-09 14:55:17 · 2387 阅读 · 2 评论 -
安装detectron2一堆的错误. 为啥一定要编译呢??凡是编译的就没有一次顺顺利利的. 烦死了, 浪费我生命. 最后放弃了
ERROR: Command errored out with exit status 1: command: 'D:\Anaconda3\python.exe' -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'F:\\PySlowFast\\pyslowfast\\detectron2_repo\\setup.py'"'"'; __file__='"'"'F:\\PySlowFast\\pyslowfast\\detectron.原创 2021-06-02 14:24:18 · 6507 阅读 · 6 评论 -
pytorch 模型转 onnx 遇到的问题记录.
1.第一个内存溢出.解决方法,增加系统虚拟内存.2.导出时报错D:\Anaconda3\lib\site-packages\torch\onnx\symbolic_helper.py:266: UserWarning: You are trying to export the model with onnx:Resize for ONNX opset version 10. This operator might cause results to not match the expected res原创 2021-05-28 08:49:29 · 6497 阅读 · 0 评论 -
python将子进程的输出抛向黑洞
最近使用visdom做训练用的界面, 结果发现, 启动服务后一段时间后训练界面总是会无缘无故的卡在某个地方.后来我用命令行启动的时候却又是好的. 非常的奇怪. 后来我判断应该是跟 subprocess.Popen 有关系.猜测可能跟stdout有关系, 有可能是PIPE 的缓存塞满了, 所以就卡住了.后来调试了一下源代码发现 还有 subprocess.DEVNULL 可以输出到控. 然后果断换上了. 然后就正常可以使用了.subprocess.STDOUTsubprocess.PIPE原创 2021-05-27 14:04:38 · 291 阅读 · 0 评论 -
固定摄像头求变化物体的算法V7
固定摄像头求变化物体的算法, 前面做了好多个版本, 其中速度最快的还是对应位置的像素直接对减法比较快.但是也有一些问题存在. 好在都能接受. from PIL import Imageimport numpy as npfrom matplotlib import pyplot as plt# import scipy.signal as signalimport cv2 a = Image.open('F:\\project\\MyAI\\计算两张图的新增部分\\43771star原创 2021-05-20 14:18:48 · 326 阅读 · 0 评论 -
求二维平面上某一点的另外几个相邻点的坐标
代码很简单写死的, 方便以后使用. def GetCrossIndex(x,y): ''' 获取某个点为中心上下左右4个点的坐标 ''' return [ [x,y-1], #上 # [x,y], #中 [x,y+1], #下 [x-1,y], #左点 [x+1,y], #右点 ]# def GetSudokuIndex(x,y): ''' 获取某个点原创 2021-05-13 10:27:42 · 725 阅读 · 2 评论 -
python 太慢,如何提高运行速度?
先吹个牛. 上一下战绩.从原先的8秒到最后的0.8秒. 提高了10倍.说一下优化思路.对于比较慢的程序, 首先要考虑的是哪个函数.比较慢. 要用计时器进行分段计时, 找出最慢的函数.计时器一般用 time.time() 就够了.开始分析计时的要求是程序输入应该是不能变的. 环境也要是一致的.import timet1= time.time() 函数1()t2= time.time()print("耗时",t2-t1) #多段打印, 多试几次, 这叫有目的的优化, 我原创 2021-05-12 16:23:36 · 6537 阅读 · 4 评论 -
带方向的范洪填充算法速度比较快
@jit(nopython=True)def ViralInfection(img, x:int, y:int): ''' 病毒感染传播算法 算法原理 依某一点为中心逐渐扩大感染范围 先从一个点向一个方向使劲的感染, 每个被感染的细胞加入到病毒源中. 传播方向是垂直的. ''' #病毒源的点位 viralSrcPoints = List() # List() #queue.Queue() .原创 2021-05-10 17:30:03 · 249 阅读 · 0 评论 -
matplotlib 常用功能知识点集合
matplotlib 挺好用的.记录一下,方便日后使用import matplotlibmatplotlib.use('TkAgg') # 解决一个bug.import matplotlib.pyplot as pltimport turtle# 解决中文标题的显示问题plt.rcParams['font.sans-serif'] = ['SimHei']plt.rcParams['axes.unicode_minus'] = False 动态实时显示数据结果,运行效果可视化很棒原创 2021-05-08 14:06:17 · 473 阅读 · 0 评论 -
python setup.py install后 ModuleNotFoundError 问题的一个可能点.
python setup.py install后 ModuleNotFoundError 问题的一个可能点.由于项目需要在另外两个项目中引用. 为统一源代码管理, 需要将一个源代码发布成全局的.百度了之后, 添加了setup.py文件,from setuptools import setup, find_packagesfrom codecs import openfrom os import pathhere = path.abspath(path.dirname(__file__))set原创 2021-04-21 14:03:12 · 2698 阅读 · 0 评论 -
numba,让python速度提升百倍,和注意事项
numba,让python速度提升百倍参考原文 https://www.cnblogs.com/zhuwjwh/p/11401215.htmlpython由于它动态解释性语言的特性,跑起代码来相比java、c++要慢很多,尤其在做科学计算的时候,十亿百亿级别的运算,让python的这种劣势更加凸显。什么是numba?numba是一款可以将python函数编译为机器代码的JIT编译器,经过numba编译的python代码(仅限数组运算),其运行速度可以接近C或FORTRAN语言。使用numba非常原创 2021-04-16 14:35:33 · 1757 阅读 · 0 评论 -
python import 第三方源代码
由于引用第三发源代码总是或多或少的需要去修改. 将第三方的源代码引入之后一般都是放在源代码下面某个目录下.例如我会将其它第三方的神经网络都放在nn下面.但是,主项目引入 nn下面的目录中的文件时, 会报错提示找不到 moduleModuleNotFoundError: No module named 'nn.Pytorch_DeepLabV3Plus.modeling.modeling'作为一个独立的项目时, 第三方的源代码不会把自己写成相对路径的 引用方式.这个时候最合适的方法是用 sys原创 2021-04-15 10:43:11 · 1459 阅读 · 0 评论 -
visdom 制作进度条 动态显示训练进度.
visdom 显示制作进度条.先上总进度图绿色的是训练了多少轮,蓝色的是每轮训练了多少的进度. def processbar(self, epoch,epochs,indeximage,totalimages,opts=None): win = self.cur_win.get("processbar", None) bili = epoch / epochs * 100 imgbili = indeximage / totalimag原创 2021-04-02 15:09:55 · 382 阅读 · 0 评论 -
软件开发性能分析跟踪小工具
先搞个效果图这个UI是在https://g2.antv.vision/zh/examples/point/bubble#bubble-image 这个的基础上改的.另外一个效果图, 如下. 也是在G2的基础上改的参考了. https://g2.antv.vision/zh/examples/bar/basic#time-bar有数据才能知道如何分析系统性能. 那么该如何分析呢?分析整个算法的性能问题点当然方法很多, 但是如果是系统性的算法甚至是分布式系统的算法, 又该如何分析系统性能问题点呢原创 2021-01-28 09:40:49 · 473 阅读 · 0 评论 -
numpy中图片颜色替换和过滤操作技巧
技巧一, 利用颜色数值的和进行黑白色的操作 npImg = np.array(img) yansemask = npImg[:,:,0] + npImg[:,:,1] + npImg[:,:,2] # 将3个通道的颜色值加起来, ==0 的是黑色, 等于 255 * 3 =765 的是白色 npImg[yansemask == 0] = 255 # 黑色的全变成白色 npImg[yansemask != 0] = 0 # 不是黑色的改成黑色.原创 2021-01-25 18:47:11 · 3056 阅读 · 0 评论 -
webapi,定时轮询多入口,多线程如何实现并发处理.
业务需求如下图. 一个业务既要通过webapi实时的接收处理任务, 又需要定时从数据库轮询, 还需要从socket接收数据后,为了统一方便后面的编程. 和性能提高. 分析了一下, 程序结构设计如下.分析后结果如下数据处理线程是一样的任务, 线程再多也是一个类业务入口则需要根据具体情况来实现 一个入口就是一个线程, 并且任务内容不同 . 需要是多个类.本程序通过python实现的, webapi 用到了tornado框架,定时循环则是简单的while循环主程序启动代码 start.py原创 2021-01-21 15:20:38 · 2549 阅读 · 0 评论 -
opencv cv2.resize 会产生多余的边框 paddle unet 模型输出多出来边框的解决方法
resize之前的图片下面是resize之后的图片用ps就可以看出来,多了一层边框. 貌似还去不掉.原创 2021-01-15 13:49:18 · 630 阅读 · 0 评论 -
pytorch版Unet的训练问题一
pytorch版Unet 还是非常简洁易懂的.官方给的代码有点小问题, 在输入和输出方面不是很好处理.为了方便自己, 而且我打算日后改一下网络模型. 所以我自己在官方的示例上建了一个分支官方的分支是https://github.com/milesial/Pytorch-UNet我的分支是https://github.com/phker/Pytorch-MyUNet目前代码还没提交.训练的时候遇到了下面这个问题.Traceback (most recent call last): Fil原创 2021-01-14 10:35:41 · 2967 阅读 · 5 评论 -
python 替代for循环的列表生成式 RGB2HSV
原始的双循环写法. 比较耗时#将RGB色彩空间 转换成HSV色彩空间 def ConvertRGB2HSV(image): w,h,c = image.shape newHSVImage = np.zeros((w,h,c), dtype=np.int) # print(newHSVImage.shape) for wi in range(0,w): for hi in range(0,h): ch,cs,cv = rgb2hsv(image[wi,hi])原创 2021-01-12 10:55:13 · 522 阅读 · 1 评论 -
再发一个python import 父目录,兄弟目录的终极解决方案
在项目根目录下新建一个 ProjectRoot.py然后在你子文件夹下面的文件里面 加上下面这些代码.会自动将项目根目录的文件夹添加到 sys.path 这样就不必为 import 的层级而烦恼了.import osimport sys# 向上逐层查找 发现存在__ProjectRoot__.py 则当做项目根目录.pathPoint = os.path.dirname(__file__)while(pathPoint != os.path.abspath(os.path.join(p原创 2020-12-16 10:13:39 · 1513 阅读 · 0 评论 -
python批量替换文本文件内容
import osimport glob # UTF-8BOM_UTF8 = b'\xef\xbb\xbf'# UTF-16, little endianBOM_LE = BOM_UTF16_LE = b'\xff\xfe'# UTF-16, big endianBOM_BE = BOM_UTF16_BE = b'\xfe\xff'# UTF-32, little endianBOM_UTF32_LE = b'\xff\xfe\x00\x00'# UTF-32, big原创 2020-12-10 09:12:25 · 2741 阅读 · 1 评论 -
python 批量改文件名
import osimport glob def 批量改文件名(src,dst): datasetRootDir = "E:\\www\\ai\\static\\dataset\\非厨余垃圾\\FeiChYuLaJi" mylabel_jsonfiles = glob.glob(os.path.join(datasetRootDir, '*.*'))# 第一个星号 '*' 是子文件夹,第二个* 是文件名 for labelfile in mylabel_j原创 2020-12-10 09:09:19 · 237 阅读 · 0 评论 -
python如何启动新进程,并实时获取程序的输出.
python如何启动新进程,并获取程序的输出.第一种比较恶心的方式, 会阻塞主进程,而且如果你不读取,会经常卡死日志.import shleximport subprocess if __name__ == '__main__': shell_cmd = 'python3 subprogram.py' cmd = shlex.split(shell_cmd) p = subprocess.Popen(cmd, shell=False, stdout=subprocess.P原创 2020-11-30 16:38:32 · 5082 阅读 · 0 评论 -
python tornado websocket
主网站启动代码#完整打分流程V2import osimport os.path import sys# sys.path.apend()#解决yolov5的反序列化问题 startimport os,sysroot_path = os.getcwd()sys.path.insert(0,root_path+"/yolov5")#解决yolov5的反序列化问题 end import tornado.httpserverimport tornado.ioloopimport t转载 2020-11-26 11:16:54 · 519 阅读 · 0 评论