winXP下构建python开发环境

2024-08-28 23:44

本文主要是介绍winXP下构建python开发环境,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

近期车间有个动平衡检测仪数采的需求,工控机是xp系统,原理也很简单,监控文件变化,发现有新的检测数据就调用远程接口传输到服务器上去。
通常python监控文件变化会用watchdog这个库, 可是xp太老了,测试了一下午没找到合适的watchdog版本,在win11下倒是测通了。 于是换了另外一个思路。 通过轮询监控文件的大小,发现大小变化了就读取最新的内容,通过requests库调用远程接口。代码如下:

import logging
import os
import time,datetime
import json
import requestslogging.basicConfig(level=logging.DEBUG, format="%(asctime)s - %(levelname)s - %(filename)s[:%(lineno)d] - %(message)s")
log = logging.getLogger('logger')# 配置文件路径,假设配置文件是JSON格式
CONFIG_FILE_PATH = 'config.json'# 读取配置文件中的监测文件路径和服务器接口with open(CONFIG_FILE_PATH, 'r',encoding="utf-8") as f:config = json.load(f)
ok_file_path = config['ok_file_path']
ng_file_path = config['ng_file_path']
server_api_url = config['server_api_url']
device_id = config['device_id']
interval = int(config['interval'])# 读取文件末尾的位置
f_ok = open(ok_file_path, 'r')
f_ok.seek(0, os.SEEK_END)  # 将流位置改为末尾
ok_file_size = os.path.getsize(ok_file_path)# 获取文件当前的大小f_ng = open(ng_file_path, 'r')
f_ng.seek(0, os.SEEK_END)  # 将流位置改为末尾
ng_file_size = os.path.getsize(ng_file_path)# 获取文件当前的大小def setlog():logger = logging.getLogger('logger')rf_handler = logging.FileHandler('log/upload.log')rf_handler.setLevel(logging.DEBUG)rf_handler.setFormatter(logging.Formatter("%(asctime)s - %(levelname)s - %(filename)s[:%(lineno)d] - %(message)s"))#debug_handler = logging.handlers.f_handler = logging.FileHandler('log/upload_error.log')f_handler.setLevel(logging.ERROR)f_handler.setFormatter(logging.Formatter("%(asctime)s - %(levelname)s - %(filename)s[:%(lineno)d] - %(message)s"))logger.addHandler(rf_handler)logger.addHandler(f_handler)# 发送文件内容到服务器
def send_to_server(data,result):global device_idglobal server_api_urlparams = {'device_id': device_id, 'result': result, 'data': data}response = requests.get(server_api_url, params=params)if response.status_code == 200:log.info("文件内容已发送到服务器data=" + str(params))else:log.error("发送失败,状态码:", response.status_code)# 监控文件变化
def monitor_log_file():global ok_file_sizeglobal ng_file_sizewhile True:# 检查文件大小是否有变化current_size = os.path.getsize(ok_file_path)if current_size > ok_file_size:# 读取新增的内容ok_file_size = current_sizenew_content = f_ok.read().strip()log.info(new_content)send_to_server(new_content,'OK')current_size = os.path.getsize(ng_file_path)if current_size > ng_file_size:# 读取新增的内容ng_file_size = current_sizenew_content = f_ng.read().strip()log.info(new_content)send_to_server(new_content,'NG')time.sleep(interval)  # 适当延时,避免过度占用资源if __name__ == "__main__":log.info("Monitoring log file changes in:" + ok_file_path + ' ' + ng_file_path)monitor_log_file()

config.json 内容如下:

{"ng_file_path": "NGData01.tj","ok_file_path": "FjokData01.tj","server_api_url": "http://192.168.1.215/hxdcs_balance/data","device_id": "1","interval": "2"
}

代码其实不复杂,构建xp的开发环境比较烦。因为xp是32位的,现在大部分机器都是64位的,所以不能用64位的系统打包程序。

1、安装winxp虚拟机

下载可以光盘引导的winxp安装盘
https://msdn.itellyou.cn
序列号:MRX3F-47B9T-2487J-KWKMF-RPWBY
下载标出来的两个光盘。
在这里插入图片描述

2、安装python

winxp支持的最高版本的python是3.4.4,所以只能下载3.4版本的python。 因为这个限制,后面很多包都收到python版本的限制。
https://www.python.org/downloads/windows/
找到3.4.4 下载
安装完成后将C:\Python34\Scripts 和C:\Python34 加入path环境变量。

3、安装pycharm

其实pycharm不好太好的选择,太占资源了。 只能下载下面这个版本的。
PyCharm 2016.1.5社区版下载链接:https://www.jetbrains.com/pycharm/download/other.html

4、安装python包

代码只用到requests 和pyinstaller这两个库,可是pip用不了,所以依赖问题要自己解决。
到pypi的网站上手工下载老版本。其中

requests-2.5.0-py2.py3-none-any.whl

pyinstaller依赖比较多

altgraph 0.17
future 0.18.2
macholib 1.14
pefile 2019.4.18
pywin32-ctypes 0.2.0
wheel 0.33.6
PyInstaller-3.4.tar

手工通过python -m pip install package_name 一个一个安装
最后通过pyinstaller -F send_data.py 进行单文件打包。

这篇关于winXP下构建python开发环境的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1116231

相关文章

Python中你不知道的gzip高级用法分享

《Python中你不知道的gzip高级用法分享》在当今大数据时代,数据存储和传输成本已成为每个开发者必须考虑的问题,Python内置的gzip模块提供了一种简单高效的解决方案,下面小编就来和大家详细讲... 目录前言:为什么数据压缩如此重要1. gzip 模块基础介绍2. 基本压缩与解压缩操作2.1 压缩文

Python设置Cookie永不超时的详细指南

《Python设置Cookie永不超时的详细指南》Cookie是一种存储在用户浏览器中的小型数据片段,用于记录用户的登录状态、偏好设置等信息,下面小编就来和大家详细讲讲Python如何设置Cookie... 目录一、Cookie的作用与重要性二、Cookie过期的原因三、实现Cookie永不超时的方法(一)

Python内置函数之classmethod函数使用详解

《Python内置函数之classmethod函数使用详解》:本文主要介绍Python内置函数之classmethod函数使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录1. 类方法定义与基本语法2. 类方法 vs 实例方法 vs 静态方法3. 核心特性与用法(1编程客

Python函数作用域示例详解

《Python函数作用域示例详解》本文介绍了Python中的LEGB作用域规则,详细解析了变量查找的四个层级,通过具体代码示例,展示了各层级的变量访问规则和特性,对python函数作用域相关知识感兴趣... 目录一、LEGB 规则二、作用域实例2.1 局部作用域(Local)2.2 闭包作用域(Enclos

Python实现对阿里云OSS对象存储的操作详解

《Python实现对阿里云OSS对象存储的操作详解》这篇文章主要为大家详细介绍了Python实现对阿里云OSS对象存储的操作相关知识,包括连接,上传,下载,列举等功能,感兴趣的小伙伴可以了解下... 目录一、直接使用代码二、详细使用1. 环境准备2. 初始化配置3. bucket配置创建4. 文件上传到os

使用Python实现可恢复式多线程下载器

《使用Python实现可恢复式多线程下载器》在数字时代,大文件下载已成为日常操作,本文将手把手教你用Python打造专业级下载器,实现断点续传,多线程加速,速度限制等功能,感兴趣的小伙伴可以了解下... 目录一、智能续传:从崩溃边缘抢救进度二、多线程加速:榨干网络带宽三、速度控制:做网络的好邻居四、终端交互

Python中注释使用方法举例详解

《Python中注释使用方法举例详解》在Python编程语言中注释是必不可少的一部分,它有助于提高代码的可读性和维护性,:本文主要介绍Python中注释使用方法的相关资料,需要的朋友可以参考下... 目录一、前言二、什么是注释?示例:三、单行注释语法:以 China编程# 开头,后面的内容为注释内容示例:示例:四

Python中win32包的安装及常见用途介绍

《Python中win32包的安装及常见用途介绍》在Windows环境下,PythonWin32模块通常随Python安装包一起安装,:本文主要介绍Python中win32包的安装及常见用途的相关... 目录前言主要组件安装方法常见用途1. 操作Windows注册表2. 操作Windows服务3. 窗口操作

Python中re模块结合正则表达式的实际应用案例

《Python中re模块结合正则表达式的实际应用案例》Python中的re模块是用于处理正则表达式的强大工具,正则表达式是一种用来匹配字符串的模式,它可以在文本中搜索和匹配特定的字符串模式,这篇文章主... 目录前言re模块常用函数一、查看文本中是否包含 A 或 B 字符串二、替换多个关键词为统一格式三、提

python常用的正则表达式及作用

《python常用的正则表达式及作用》正则表达式是处理字符串的强大工具,Python通过re模块提供正则表达式支持,本文给大家介绍python常用的正则表达式及作用详解,感兴趣的朋友跟随小编一起看看吧... 目录python常用正则表达式及作用基本匹配模式常用正则表达式示例常用量词边界匹配分组和捕获常用re