首页
关于
友链
Search
1
ESXI 一些功能调整
222 阅读
2
天翼云网关3.0/4.0超管密码
182 阅读
3
SoftEther 客户端篇
177 阅读
4
ESXi安装黑群晖
141 阅读
5
SoftEther 服务端篇
127 阅读
默认分类
代码相关
vue
html
python
系统
数据库
docker
安卓
软件分享
杂七杂八的工具
游戏分享
游戏相关
我的家庭影院
登录
Search
标签搜索
python
esxi
git
SoftEther
linux
apscheduler
在线
rclone
Ubuntu
list
列表
idm
激活码
Charles
pdf
免安装
鲁大师
图片查看器
蜂蜜浏览器
honeyview
哥特式
累计撰写
85
篇文章
累计收到
12
条评论
首页
栏目
默认分类
代码相关
vue
html
python
系统
数据库
docker
安卓
软件分享
杂七杂八的工具
游戏分享
游戏相关
我的家庭影院
页面
关于
友链
搜索到
24
篇与
的结果
2024-07-02
【Django】执行查询——查询JSONField
JSONField本篇的例子以下面这个模型为基础:from django.db import models class Dog(models.Model): name = models.CharField(max_length=200) data = models.JSONField(null=True) def __str__(self): return self.name 保存和查询None值在使用JSONField时,要注意空值的处理,注意区分SQL NULL和JSON null保存None值我们首先创建两个Dog实例from django.db.models import Value, JSONField Dog.objects.create(name="Max", data=None) # SQL NULL. # <Dog: Max> Dog.objects.create(name="Archie", data=Value(None, JSONField())) # JSON null. # <Dog: Archie>观察两个实例在数据库中的表现,可以发现SQL NULL和JSON null是不一样的。查询None值查询时,None值将被解释为JSON null,要查询SQL NULL,需要使用isnull:Dog.objects.filter(data=None) # <QuerySet [<Dog: Archie>]> Dog.objects.filter(data=Value(None, JSONField())) # <QuerySet [<Dog: Archie>]> Dog.objects.filter(data__isnull=True) # <QuerySet [<Dog: Max>]> Dog.objects.filter(data__isnull=False) # <QuerySet [<Dog: Archie>]> 对比可以发现,data=None在保存时存储为SQL NULL,查询时解释为JSON null根据键值查找根据json数据的键进行查找,用__连接,可以多个键连接一起,如果某个值是一个列表,要进行索引,就用整数代表该列表的索引。例子:Dog.objects.create( ... name="Rufus", ... data={ ... "breed": "labrador", ... "owner": { ... "name": "Bob", ... "other_pets": [ ... { ... "name": "Fishy", ... } ... ], ... }, ... }, ... ) # <Dog: Rufus> Dog.objects.create(name="Meg", data={"breed": "collie", "owner": None}) # <Dog: Meg> # __连接键进行查找 Dog.objects.filter(data__breed="collie") # <QuerySet [<Dog: Meg>]> # 多个键连接进行查找 Dog.objects.filter(data__owner__name="Bob") # <QuerySet [<Dog: Rufus>]> # 某个值是一个列表,要进行索引,就用整数代表该列表的索引 Dog.objects.filter(data__owner__other_pets__0__name="Fishy") # <QuerySet [<Dog: Rufus>]> # 查询缺少的键,使用isnull查找 Dog.objects.create(name="Shep", data={"breed": "collie"}) # <Dog: Shep> Dog.objects.filter(data__owner__isnull=True) # <QuerySet [<Dog: Shep>]> 包含与键查找containscontains 查询返回的对象是那些包含给定键值对的顶层字段的对象。Dog.objects.create(name="Rufus", data={"breed": "labrador", "owner": "Bob"}) # <Dog: Rufus> Dog.objects.create(name="Meg", data={"breed": "collie", "owner": "Bob"}) # <Dog: Meg> Dog.objects.create(name="Fred", data={}) # <Dog: Fred> Dog.objects.filter(data__contains={"owner": "Bob"}) # <QuerySet [<Dog: Rufus>, <Dog: Meg>]> Dog.objects.filter(data__contains={"breed": "collie"}) # <QuerySet [<Dog: Meg>]> contained_by这个可以理解为 contains 查询的反向。 要查询的对象满足这样的条件:其该字段对应的数据是传递的值的子集。Dog.objects.create(name="Rufus", data={"breed": "labrador", "owner": "Bob"}) # <Dog: Rufus> Dog.objects.create(name="Meg", data={"breed": "collie", "owner": "Bob"}) # <Dog: Meg> Dog.objects.create(name="Fred", data={}) # <Dog: Fred> Dog.objects.filter(data__contained_by={"breed": "collie", "owner": "Bob"}) # <QuerySet [<Dog: Meg>, <Dog: Fred>]> Dog.objects.filter(data__contained_by={"breed": "collie"}) # <QuerySet [<Dog: Fred>]> has_key返回数据顶层的键中有给定值的对象。Dog.objects.create(name="Rufus", data={"breed": "labrador"}) # <Dog: Rufus> Dog.objects.create(name="Meg", data={"breed": "collie", "owner": "Bob"}) # <Dog: Meg> Dog.objects.filter(data__has_key="owner") # <QuerySet [<Dog: Meg>]> has_keys返回数据顶层的键都包含在给定列表中的对象。Dog.objects.create(name="Rufus", data={"breed": "labrador"}) # <Dog: Rufus> Dog.objects.create(name="Meg", data={"breed": "collie", "owner": "Bob"}) # <Dog: Meg> Dog.objects.filter(data__has_keys=["breed", "owner"]) # <QuerySet [<Dog: Meg>]> has_any_keys返回数据顶层的键中有至少1个在给定列表中的对象,比has_keys条件更宽松。Dog.objects.create(name="Rufus", data={"breed": "labrador"}) # <Dog: Rufus> Dog.objects.create(name="Meg", data={"owner": "Bob"}) # <Dog: Meg> Dog.objects.filter(data__has_any_keys=["owner", "breed"]) # <QuerySet [<Dog: Rufus>, <Dog: Meg>]>
2024年07月02日
18 阅读
0 评论
0 点赞
2024-06-28
python关键字
在Python中,assert是一个关键字,用于编写断言(assertion)。断言是一种用于检查程序中的条件是否为真的方法,通常用于调试和测试目的。当使用assert时,程序会在断言条件为假的情况下引发AssertionError异常。assert的语法如下:assert condition, message其中,condition是要检查的条件,如果条件为假,将会引发AssertionError异常。message是可选的,用于在断言失败时指定错误消息。以下是一个简单的示例:def divide(x, y): assert y != 0, "除数不能为零" return x / y result = divide(6, 3) # 不会触发断言异常 print(result) result = divide(6, 0) # 会触发断言异常,抛出AssertionError: 除数不能为零在上面的示例中,assert y != 0, "除数不能为零"用于检查除数是否为零,如果为零则触发AssertionError异常,并且指定了错误消息"除数不能为零"。这有助于在程序中快速识别和调试问题,并提供有用的错误信息。需要注意的是,一般情况下,assert语句在生产环境中通常会被禁用,因为它们可能会暴露敏感信息或导致安全问题。然而,在开发和测试阶段,assert语句是一个非常有用的工具,可以帮助程序员快速发现和修复问题。
2024年06月28日
14 阅读
0 评论
0 点赞
2024-05-31
Django查询技巧
查询每个供货商的商品库存如果supplier_supplier.id是每个供应商的ID,并且在extra()方法中使用原始SQL查询来计算每个供应商的库存总和,可以按如下方式操作:from django.db.models import Sum # 假设您有名为Supplier的模型,它有一个名为supplier的外键字段指向supplier_supplier模型 # 获取每个供应商的库存总和 supplier_stock_sums = Supplier.objects.extra( select={'stock_sum': 'SELECT IFNULL(SUM(main_product.stock), 0) FROM main_product WHERE main_product.supplier_id = supplier_supplier.id AND main_product.status = 10'} ) # 打印每个供应商的库存总和 for supplier in supplier_stock_sums: print(f"供应商 {supplier.id} 的库存总和为 {supplier.stock_sum}")在上面的示例中,在extra()方法的select参数中使用了原始SQL查询,并在查询中引用了supplier_supplier.id来表示每个供应商的ID。这样就可以计算每个供应商的库存总和。
2024年05月31日
14 阅读
0 评论
0 点赞
2024-05-11
Flask项目的一些封装
封装传入的参数main.py文件from base.views import asapi from flask import Flask, request, jsonify from flask_cors import CORS from base.views import ApiException as ex app = Flask(__name__) # CORS(app, resources={r"/*": {"origins": ["http://localhost:63343"]}}) CORS(app, resources={r"/*": {"origins": "*"}}) def checker1(param): # print("checker", param) return True @app.route("/test", methods=['get', 'post']) @asapi(checker=checker1) def test(param): return param if __name__ == '__main__': # en = Encipher() # res = en.getDatas({"1": "123"}) # print(res) # print(en.encode_data(res)) app.run( host="0.0.0.0", port=6003, debug=False )main.py文件下,新建一个base目录,创建文件views.py,写入下面内容from flask import request, jsonify from lxml.html.clean import clean_html import inspect class SiteException(Exception): def __init__(self, message=None, code=None): self.message = message self.code = code def to_json(self): pass def __str__(self): # return jsonify({"code": self.code, "msg": self.message}) return self.message class ApiException(SiteException): def __init__(self, message, code=1001): self.message = message self.code = code def to_json(self): return {"code": self.code, "msg": self.message} # return self.message def raiseApiEx(e, c=1001): raise ApiException(e, c) def asapi(a=None, checker=None): def param_handler(func): def wrapper(*args, **kwargs): def __func(**kvargs): try: req = kvargs.get("param") if checker and not checker(req): raiseApiEx('检查不通过') params = req datas = {} for k, v in list(params.items()): if v == 'undefined': # 排除JS值空 params[k] = '' for k in list(params.keys()): v = params[k] if isinstance(v, str) and '<' in v and '>' in v: lv = v.lower() if 'script' in lv or 'cookie' in lv: params[k] = clean_html(v) # arginfos = getattr(func, 'arginfos') arginfos = inspect.signature(func).parameters for param_name, param_info in arginfos.items(): if param_name != "param" and param_name not in params: params[param_name] = param_info.default if param_name == "param": datas['param'] = params elif param_info.default == inspect.Parameter.empty and param_name not in params: raise raiseApiEx(f"{func.__name__}缺少参数:{param_name}") else: datas[param_name] = params.get(param_name, param_info.default) res = func(**datas) return apiReaspone(en.getDatas(res)) except ApiException as e: return jsonify(e.to_json()) param = dict(request.values.items()) setattr(__func, 'checker', checker) kwargs.setdefault("param", param) # 在这里可以对参数进行处理,比如验证、转换等操作 # 将参数传递给路由处理函数 return __func(**kwargs) return wrapper return param_handler def apiReaspone(data): return jsonify({"code": 200, "data": data})
2024年05月11日
20 阅读
0 评论
0 点赞
2024-03-13
pip使用教程
1. pip升级库# 查看当前电脑中所有可以升级的Python包 pip list --outdated # 安装pip-review包 pip install pip-review # 使用pip-review命令一次性更新所有过时的包 pip-review --local --interactive # 升级单个包 pip install --upgrade ** pip install --upgrade **
2024年03月13日
47 阅读
0 评论
0 点赞
2024-01-30
兰空图床本地上传文件,配合Typora使用
# -*- coding: utf-8 -*- # @Time : 2022-05-18 13:53 # @Author : GeTeShi # @File : test6.py import datetime import time import requests import redis import json import re import os import sys rdb = redis.StrictRedis(host='localhost', port=6379, decode_responses=True) NAME = "test" forever = 60 * 60 * 24 * 30 * 12 * 100 def get_cache(key, name=None): global NAME if name: NAME = name if rdb.hlen(name) and rdb.hexists(name, key): res = rdb.hget(NAME, key) try: res = json.loads(res) except json.decoder.JSONDecodeError: pass return res else: return False def get_cache_all_key(name): global NAME if name: NAME = name if rdb.hlen(name): return rdb.hkeys(name=name) def set_cache(key, content, timeout=60, name=None): global NAME if name: NAME = name if isinstance(content, dict): content = json.dumps(content) rdb.hset(NAME, key, content) rdb.expire(key, timeout) def del_cache(key, name=None): global NAME if name: NAME = name if rdb.hexists(name=name, key=key): rdb.hdel(name, key) def md5(s): import hashlib m2 = hashlib.md5() m2.update(s.encode("utf-8")) return m2.hexdigest() class image_upload(object): def __init__(self, email, password): self.URL = "https://你的图床的api" self.header = { "Accept": "application/json", "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) " "Chrome/108.0.0.0 Safari/537.36 Edg/108.0.1462.54 ", } self.email = email self.password = password self.TOKEN_KEY = f"{self.email}_{md5(self.password)}_{datetime.datetime.strftime(datetime.datetime.now(), '%Y%m')}" self.sess = requests.Session() self.sess.get(url="https://你的图床的api") def get_requests(self, url, method, data=None, file=None): if not self.header.get('Authorization') and "tokens" not in url: header = self.header self.login() self.header.update(header) if method == "post": response = self.sess.post(url=url, data=data if data else "", headers=self.header) elif method == "get": response = self.sess.get(url=url, params=data if data else "", headers=self.header) elif method == "upload": response = self.sess.post(url=url, files=file, headers=self.header, data=data) else: response = self.sess.delete(url=url, headers=self.header) if response.status_code == 200: response.encoding = "utf-8" response = response.json() return response def get_token(self): self.header = {"Accept": "application/json"} token = self.get_requests(url=self.URL + "/tokens", method="post", data={ "email": self.email, "password": self.password }) if token: set_cache(self.TOKEN_KEY, token, timeout=60 * 60 * 24, name="upload-image") return token def upload(self, file): self.header.update({ "Accept": "multipart/form-data" }) filename = file.rsplit("\\", 1)[1].split(".")[0] filetype = file.rsplit("\\", 1)[1].split(".")[1] files = { "file": (f"{filename}.{filetype}", open(file, 'rb'), f"image/{filetype}"), } # 存储策略id,默认1 data = { "strategy_id": 1, } url = self.URL + "/upload" res = self.get_requests(url=url, method="upload", data=data, file=files) if res and res.get("status"): data = res.get('data') print(data.get('links').get('url')) return data.get('links').get('thumbnail_url') else: raise Exception(f"图片上传失败,失败原因:{res.get('message')}") def login(self): token = get_cache(self.TOKEN_KEY, name="upload-image") if (not token) or (not token.get('data') or not token.get('data').get('token')): token = self.get_token() # token = get_cache(self.TOKEN_KEY, name="upload-image") url = self.URL + "/profile" # print(token.get('data')) self.header.update({ "Authorization": "Bearer " + token.get('data').get('token'), "Accept": "application/json" }) self.get_requests(url=url, data="", method="get") def main(self): pass def clear(self): self.get_requests(url=self.URL + "/tokens", data="", method="delete") self.header = {} return "已清空tokens" def get_strategies(self): """获取存储策略""" res = self.get_requests(url=self.URL + "/strategies", method="get") print(res) if __name__ == '__main__': images = sys.argv[1:] for image in images: image_upload(email="你的用户名", password="你的密码").upload(file=image)
2024年01月30日
24 阅读
0 评论
0 点赞
2024-01-29
requestium库的使用
这个Python库把requests按在地上摩擦!在 Python 编程中,处理网络请求是一个常见的任务,特别是做爬虫采集数据。最受欢迎的是 Requests 和 Selenium。而Requestium 结合了这两个库优点的工具,它可以让你在一个统一的接口中使用 Requests 的简便性和 Selenium 的强大功能。1. 安装 Requestium在开始使用 Requestium 之前,你需要先将其安装到你的环境中。安装非常简单,可以通过 pip 命令完成:pip install requestium2. Requestium 的核心功能结合 Requests 和 Selenium: Requestium 将 Requests 库的简易性和 Selenium 库的交互功能结合在了一起。无缝切换: 它允许用户在需要时从 Requests 无缝切换到 Selenium,反之亦然。增强的 XPath 支持: Requestium 提供了对 XPath 的额外支持,使得在使用 Selenium 时可以更方便地定位元素。3. 使用 Requestium 发送请求Requestium 的使用方法与 Requests 类似。以下是一个基本示例,展示如何发送 GET 请求:# 创建一个 Session对象 from requestium import Session # 使用 Requestium 发送 GET 请求 s = Session(webdriver_path='chromedriver', browser='chrome', default_timeout=15) response = s.get('https://www.example.com') print(response.text)4. 结合 Selenium 和 RequestsRequestium 的真正强大之处在于它能够让你在需要时切换到 Selenium。以下是一个示例,展示如何在发送请求后使用 Selenium 处理 JavaScript:from requestium import Session s = Session(webdriver_path='chromedriver', browser='chrome', default_timeout=15) # 发送请求 s.get('https://www.example.com') # 使用 Selenium 处理页面 s.driver.get('https://www.example.com') # 使用 Selenium 定位元素 element = s.driver.find_element_by_xpath('//div[@class="example"]') print(element.text)5. 实战案例假设我们要抓取一个动态加载内容的网页。首先,我们使用 Requestium 发送请求,然后通过 Selenium 处理 JavaScript,最后提取所需数据。from requestium import Session s = Session(webdriver_path='chromedriver', browser='chrome', default_timeout=15) # 访问网页 s.get('https://www.dynamic-content-website.com') # 使用 Selenium 处理动态内容 s.driver.get('https://www.dynamic-content-website.com') # 提取数据 data = s.driver.find_element_by_xpath('//div[@id="dynamic-content"]').text print(data)
2024年01月29日
18 阅读
0 评论
0 点赞
2024-01-11
JupyterNoteBook安装
1. 安装# 安装 pip install jupyter # 安装中文包 pip install jupyterlab-language-pack-zh-CN # 代码自动补全 pip install jupyterlab-lsp pip install -U jedi-language-server启动jupyter notebook配置虚拟环境# 首先需要进入到虚拟环境里面 .\python-venv\main\Scripts\activate # 这里演示的虚拟环境名称叫main python -m ipykernel install --user --name=main
2024年01月11日
12 阅读
0 评论
0 点赞
2023-11-13
matrix搭建以及机器人配置
matrix的安装1. 创建配置文件sudo docker run -it --rm -v /tmp/data:/data -e SYNAPSE_SERVER_NAME=你的域名 -e SYNAPSE_REPORT_STATS=yes matrixdotorg/synapse:latest generate其中/tmp/data可以换,记得就行,这里用这个展示2. 到/tmp/data里面找到homeserver.yaml编辑 # Configuration file for Synapse. # # This is a YAML file: see [1] for a quick introduction. Note in particular # that *indentation is important*: all the elements of a list or dictionary # should have the same indentation. # # [1] https://docs.ansible.com/ansible/latest/reference_appendices/YAMLSyntax.html # # For more information on how to configure Synapse, including a complete accounting of # each option, go to docs/usage/configuration/config_documentation.md or # https://matrix-org.github.io/synapse/latest/usage/configuration/config_documentation.html server_name: "matrix域名" pid_file: /data/homeserver.pid listeners: - port: 8008 # 容器的端口号,不改 tls: false type: http x_forwarded: true resources: - names: [client, federation] compress: false # database: # name: sqlite3 # args: # database: /data/homeserver.db database: # 数据库设置,如果人少的话推荐上面的sqlite,pgdb太伤人了 name: psycopg2 args: user: matrix password: 24W53MDwk8TyBh7z database: matrix host: # 你懂的 cp_min: 5 cp_max: 10 # allow_unsafe_locale: true log_config: "/data/matrix域名.log.config" # 自动生成的,一般不用改 media_store_path: /data/media_store registration_shared_secret: "c:*RWamLStS9J,sQhm7=dwGpC2#DVKRtwCkCBvPwMJ&p" report_stats: true macaroon_secret_key: "g3@hjR7pMO2&enhNM*jKZq*l3=JS@d~Jl8J3ZvJ~smCkLD" form_secret: "I,kV-blS-oVG3h_c2kiQ&kH0P+=@V&pMedyu4~E-i;BzP" signing_key_path: "/data/matrix域名.signing.key" # 自动生成的,一般不用改 trusted_key_servers: - server_name: "matrix域名" # 开放注册 enable_registration: true # 注册不需要验证,没有配置邮箱的时候推荐这个不验证 enable_registration_without_verification: false # 注册需要验证邮箱 registrations_require_3pid: - email # 邮箱配置,这里用88邮箱演示 email: smtp_host: "smtp.88.com" smtp_port: 465 smtp_user: "发送的邮箱地址" smtp_pass: "密码,你懂的" force_tls: true require_transport_security: true enable_tls: true notif_from: "通知的邮箱地址" app_name: "聊天室" enable_notifs: true notif_for_new_users: true client_base_url: "https://element的域名" validation_token_lifetime: 15m invite_client_location: https://element的域名3. docker-compose 文件version: "3.3" services: synapse: image: "matrixdotorg/synapse:latest" container_name: "matrix_synapse" restart: unless-stopped ports: - 8008:8008 volumes: - "./data:/data" # 这个data需要上面的/tmp/data,我的这个文件放在/tmp里面,所以用了./data environment: VIRTUAL_HOST: "matrix域名" VIRTUAL_PORT: 8008 LETSENCRYPT_HOST: "matrix域名" SYNAPSE_SERVER_NAME: "matrix域名" SYNAPSE_REPORT_STATS: "yes" element-web: ports: - '80:80' volumes: - './data/config.json:/app/config.json' image: vectorim/element-web restart: unless-stopped搭建到这里就完了{lamp/}使用nio-bot安装这两个库pip nio-bot pip install nio-bot[e2ee,cli]实例文件import logging # from niobot import NioBot, Context import niobot from apscheduler.schedulers.asyncio import AsyncIOScheduler logging.basicConfig(level=logging.INFO) bot = niobot.NioBot( homeserver="https://test.test.test", # your homeserver user_id="@test:test.test.test", # the user ID to log in as (Fully qualified) device_id="nio-message", store_path=r"./store/", command_prefix="!", # the prefix to respond to (case sensitive, must be lowercase if below is True) case_insensitive=True, # messages will be lower()cased before being handled. This is recommended. owner_id="@user:test.test.test", # The user ID who owns this bot. Optional, but required for bot.is_owner(...). ignore_self=True ) # bot.mount_module("test.py") def schedule_auto_messages(): scheduler = AsyncIOScheduler() # 测试的定时任务 # scheduler.add_job(test, "cron", second="*/3", id="test", misfire_grace_time=180, args=[bot]) scheduler.start() @bot.on_event("ready") async def on_ready(sync_result: niobot.SyncResponse): print("Logged in!") schedule_auto_messages() @bot.command("ping") async def ping_command(ctx: niobot.Context): latency = ctx.latency # await ctx.reply("Pong!") await ctx.respond(f"Pong! `{latency:.2f}ms` latency.") # A command with arguments @bot.command(name="echo") async def echo_command(ctx: niobot.Context, message: str): print("这里的输出") await ctx.respond(message) # bot.run(password="password") # starts the bot with a password. If you already have a login token, see: bot.run(access_token="token") # starts the bot with a login token.获取token使用这个命令niocli get-access-token -U '@test:test.test.test' -D '设备id->device_id'验证设备https://github.com/poljar/matrix-nio/blob/main/examples/verify_with_emoji.py通过表情符号验证,申请token使用上面那个,获取token的方式,之后用这个验证,需要创建一个文件// credentials.json {"homeserver": "https://matrix.example.org", "user_id": "@test:matrix.example.org", "device_id": "niobot2", "access_token": "上面那个"}之后直接运行,多尝试几次,不成功就把store里面的文件删掉。重新获取token,先运行机器人的文件,再运行这个表情包验证文件!!
2023年11月13日
121 阅读
0 评论
0 点赞
2023-10-31
pyenv使用教程
[root@localhost ~]# cat /etc/redhat-release CentOS release 6.9 (Final) 系统默认是Python 2.6 版本 [root@localhost ~]# python -V Python 2.6.6 1) 安装依赖环境 [root@localhost ~]# yum -y install gcc zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel git 2) 安装pyenv包 pyenv可以通过多种方式安装,可以参考项目在github上的Installtion, 地址为: https://github.com/pyenv/pyenv-installer 推荐采用The automatic installer的方式安装,可以一键安装pyenv的所有插件。 [root@localhost ~]# curl -L https://github.com/pyenv/pyenv-installer/raw/master/bin/pyenv-installer | bash pyenv套件下插件: - pyenv-doctor - pyenv-installer - pyenv-update - pyenv-virtualenv - pyenv-which-ext ================================================================================== 温馨提示: 以上https://github.com/pyenv/pyenv-installer/raw/master/bin/pyenv-installer的访问内容 , 可以将内容粘出来放在服务器的一个shell脚本文件中, 然后执行该脚本用以安装pyenv 该脚本下载地址: https://pan.baidu.com/s/1wW9ylrmc4Q9wxu_i3-1wYA 提取密码: rhtj 执行脚本进行安装(执行前授予755权限) # chmod 755 pyenv-installer # /bin/bash pyenv-installer ================================================================================= 分析一下上面的pyenv-installer脚本,可以发现在centos上,其实它做了以下事情: git clone --depth 1"git://github.com/pyenv/pyenv.git" "${HOME}/.pyenv" git clone --depth 1"git://github.com/pyenv/pyenv-doctor.git" "${HOME}/.pyenv/plugins/pyenv-doctor" git clone --depth 1"git://github.com/pyenv/pyenv-installer.git" "${HOME}/.pyenv/plugins/pyenv-installer" git clone --depth 1"git://github.com/pyenv/pyenv-update.git" "${HOME}/.pyenv/plugins/pyenv-update" git clone --depth 1"git://github.com/pyenv/pyenv-virtualenv.git" "${HOME}/.pyenv/plugins/pyenv-virtualenv" git clone --depth 1"git://github.com/pyenv/pyenv-which-ext.git" "${HOME}/.pyenv/plugins/pyenv-which-ext" 上面安装完成后,还需要执行下面的命令,将pyenv安装到系统环境变量中。 [root@localhost ~]# ll -d /root/.pyenv drwxr-xr-x 11 root root 4096 Dec 17 10:48 /root/.pyenv 在~/.bash_profile文件底部添加下面三行内容, 让系统可以找到 pyenv 安装的 Python [root@localhost ~]# vim ~/.bash_profile export PATH="/root/.pyenv/bin:$PATH" eval "$(pyenv init -)" eval "$(pyenv virtualenv-init -)" # Ubuntu使用这个 echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc echo 'command -v pyenv >/dev/null || export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc echo 'eval "$(pyenv init -)"' >> ~/.bashrc 使上面配置生效 [root@localhost ~]# source ~/.bash_profile 查看pyenv安装情况 [root@localhost ~]# pyenv --version //或者"pyenv -v" pyenv 1.2.8 更新pyenv [root@localhost ~]# pyenv update 3) 卸载pyenv 先删除pyenv的安装目录, 这里即是/root/.pyenv [root@localhost ~]# rm -fr /root/.pyenv 接着删除~/.bash_profile里面配置的系统环境变量 [root@localhost ~]# vim ~/.bash_profile //删除下面三行 export PATH="/root/.pyenv/bin:$PATH" eval "$(pyenv init -)" eval "$(pyenv virtualenv-init -)" [root@localhost ~]# source ~/.bash_profile 这样pyenv就被卸载了, 卸载pyenv后, 当前终端shell里会出现"-bash: pyenv: command not found" 的提示信息, 不过不影响使用. 再打开其他的终端窗口, 就不会出现该提示信息. pyenv常用命令pyenv install --list # 列出可安装版本 pyenv install <version> # 安装对应版本 pyenv install -v <version> # 安装对应版本,若发生错误,可以显示详细的错误信息 pyenv versions # 显示当前使用的python版本 pyenv which python # 显示当前python安装路径 pyenv global <version> # 设置默认Python版本 pyenv local <version> # 当前路径创建一个.python-version, 以后进入这个目录自动切换为该版本 pyenv shell <version> # 当前shell的session中启用某版本,优先级高于global 及 local
2023年10月31日
49 阅读
0 评论
0 点赞
2023-10-13
uwsgi启动flask
1. 安装uWSGIpip install uwsgi2. 配置启动文件创建一个uwsgi.ini文件,写入下面的内容[uwsgi] master = true # 处理器数 processes = 1 # 线程数 threads = 2 master = true # 指向项目目录 chdir = /www/wwwroot/wxbot #这里是flask启动程序文件,此处切忌填错py文件的名称 wsgi-file= /www/wwwroot/wxbot/main.py # 外部访问地址,可以指定多种协议,此处使用http。 http = 0.0.0.0:9001 logto = /www/wwwroot/wxbot/logs/error.log chmod-socket = 660 # flask在main.py文件中的app名 callable = app # 前面的app是flask的启动文件名,后面的app是文件里面的Flask对象 module = app:app vacuum = true uid=root gid=root max-requests = 1000 # 虚拟环境 virtualenv = /www/wwwroot/wxbot/266c58d8eb9a31541c9e5864d818adc1_venv # 指定运行的参数 pyargv = --ocr --det #uwsgi错误invalid request block size,默认是4096 buffer-size = 65536 3. 启动uwsgi --ini /home/uconfig.ini
2023年10月13日
50 阅读
0 评论
0 点赞
2023-06-08
pycrypto安装报错
pip安装的时候报错,提示有个语法错误{collapse}{collapse-item label="报错信息" open}error: subprocess-exited-with-error × python setup.py bdist_wheel did not run successfully. │ exit code: 1 ╰─> [179 lines of output] running bdist_wheel running build running build_py creating build creating build\lib.win-amd64-cpython-37 creating build\lib.win-amd64-cpython-37\Crypto copying lib\Crypto\pct_warnings.py -> build\lib.win-amd64-cpython-37\Crypto copying lib\Crypto\__init__.py -> build\lib.win-amd64-cpython-37\Crypto creating build\lib.win-amd64-cpython-37\Crypto\Hash copying lib\Crypto\Hash\hashalgo.py -> build\lib.win-amd64-cpython-37\Crypto\Hash copying lib\Crypto\Hash\HMAC.py -> build\lib.win-amd64-cpython-37\Crypto\Hash copying lib\Crypto\Hash\MD2.py -> build\lib.win-amd64-cpython-37\Crypto\Hash copying lib\Crypto\Hash\MD4.py -> build\lib.win-amd64-cpython-37\Crypto\Hash copying lib\Crypto\Hash\MD5.py -> build\lib.win-amd64-cpython-37\Crypto\Hash copying lib\Crypto\Hash\RIPEMD.py -> build\lib.win-amd64-cpython-37\Crypto\Hash copying lib\Crypto\Hash\SHA.py -> build\lib.win-amd64-cpython-37\Crypto\Hash copying lib\Crypto\Hash\SHA224.py -> build\lib.win-amd64-cpython-37\Crypto\Hash copying lib\Crypto\Hash\SHA256.py -> build\lib.win-amd64-cpython-37\Crypto\Hash copying lib\Crypto\Hash\SHA384.py -> build\lib.win-amd64-cpython-37\Crypto\Hash copying lib\Crypto\Hash\SHA512.py -> build\lib.win-amd64-cpython-37\Crypto\Hash copying lib\Crypto\Hash\__init__.py -> build\lib.win-amd64-cpython-37\Crypto\Hash creating build\lib.win-amd64-cpython-37\Crypto\Cipher copying lib\Crypto\Cipher\AES.py -> build\lib.win-amd64-cpython-37\Crypto\Cipher copying lib\Crypto\Cipher\ARC2.py -> build\lib.win-amd64-cpython-37\Crypto\Cipher copying lib\Crypto\Cipher\ARC4.py -> build\lib.win-amd64-cpython-37\Crypto\Cipher copying lib\Crypto\Cipher\blockalgo.py -> build\lib.win-amd64-cpython-37\Crypto\Cipher copying lib\Crypto\Cipher\Blowfish.py -> build\lib.win-amd64-cpython-37\Crypto\Cipher copying lib\Crypto\Cipher\CAST.py -> build\lib.win-amd64-cpython-37\Crypto\Cipher copying lib\Crypto\Cipher\DES.py -> build\lib.win-amd64-cpython-37\Crypto\Cipher copying lib\Crypto\Cipher\DES3.py -> build\lib.win-amd64-cpython-37\Crypto\Cipher copying lib\Crypto\Cipher\PKCS1_OAEP.py -> build\lib.win-amd64-cpython-37\Crypto\Cipher copying lib\Crypto\Cipher\PKCS1_v1_5.py -> build\lib.win-amd64-cpython-37\Crypto\Cipher copying lib\Crypto\Cipher\XOR.py -> build\lib.win-amd64-cpython-37\Crypto\Cipher copying lib\Crypto\Cipher\__init__.py -> build\lib.win-amd64-cpython-37\Crypto\Cipher creating build\lib.win-amd64-cpython-37\Crypto\Util copying lib\Crypto\Util\asn1.py -> build\lib.win-amd64-cpython-37\Crypto\Util copying lib\Crypto\Util\Counter.py -> build\lib.win-amd64-cpython-37\Crypto\Util copying lib\Crypto\Util\number.py -> build\lib.win-amd64-cpython-37\Crypto\Util copying lib\Crypto\Util\py3compat.py -> build\lib.win-amd64-cpython-37\Crypto\Util copying lib\Crypto\Util\randpool.py -> build\lib.win-amd64-cpython-37\Crypto\Util copying lib\Crypto\Util\RFC1751.py -> build\lib.win-amd64-cpython-37\Crypto\Util copying lib\Crypto\Util\winrandom.py -> build\lib.win-amd64-cpython-37\Crypto\Util copying lib\Crypto\Util\_number_new.py -> build\lib.win-amd64-cpython-37\Crypto\Util copying lib\Crypto\Util\__init__.py -> build\lib.win-amd64-cpython-37\Crypto\Util creating build\lib.win-amd64-cpython-37\Crypto\Random copying lib\Crypto\Random\random.py -> build\lib.win-amd64-cpython-37\Crypto\Random copying lib\Crypto\Random\_UserFriendlyRNG.py -> build\lib.win-amd64-cpython-37\Crypto\Random copying lib\Crypto\Random\__init__.py -> build\lib.win-amd64-cpython-37\Crypto\Random creating build\lib.win-amd64-cpython-37\Crypto\Random\Fortuna copying lib\Crypto\Random\Fortuna\FortunaAccumulator.py -> build\lib.win-amd64-cpython-37\Crypto\Random\Fortuna copying lib\Crypto\Random\Fortuna\FortunaGenerator.py -> build\lib.win-amd64-cpython-37\Crypto\Random\Fortuna copying lib\Crypto\Random\Fortuna\SHAd256.py -> build\lib.win-amd64-cpython-37\Crypto\Random\Fortuna copying lib\Crypto\Random\Fortuna\__init__.py -> build\lib.win-amd64-cpython-37\Crypto\Random\Fortuna creating build\lib.win-amd64-cpython-37\Crypto\Random\OSRNG copying lib\Crypto\Random\OSRNG\fallback.py -> build\lib.win-amd64-cpython-37\Crypto\Random\OSRNG copying lib\Crypto\Random\OSRNG\nt.py -> build\lib.win-amd64-cpython-37\Crypto\Random\OSRNG copying lib\Crypto\Random\OSRNG\posix.py -> build\lib.win-amd64-cpython-37\Crypto\Random\OSRNG copying lib\Crypto\Random\OSRNG\rng_base.py -> build\lib.win-amd64-cpython-37\Crypto\Random\OSRNG copying lib\Crypto\Random\OSRNG\__init__.py -> build\lib.win-amd64-cpython-37\Crypto\Random\OSRNG creating build\lib.win-amd64-cpython-37\Crypto\SelfTest copying lib\Crypto\SelfTest\st_common.py -> build\lib.win-amd64-cpython-37\Crypto\SelfTest copying lib\Crypto\SelfTest\__init__.py -> build\lib.win-amd64-cpython-37\Crypto\SelfTest creating build\lib.win-amd64-cpython-37\Crypto\SelfTest\Cipher copying lib\Crypto\SelfTest\Cipher\common.py -> build\lib.win-amd64-cpython-37\Crypto\SelfTest\Cipher copying lib\Crypto\SelfTest\Cipher\test_AES.py -> build\lib.win-amd64-cpython-37\Crypto\SelfTest\Cipher copying lib\Crypto\SelfTest\Cipher\test_ARC2.py -> build\lib.win-amd64-cpython-37\Crypto\SelfTest\Cipher copying lib\Crypto\SelfTest\Cipher\test_ARC4.py -> build\lib.win-amd64-cpython-37\Crypto\SelfTest\Cipher copying lib\Crypto\SelfTest\Cipher\test_Blowfish.py -> build\lib.win-amd64-cpython-37\Crypto\SelfTest\Cipher copying lib\Crypto\SelfTest\Cipher\test_CAST.py -> build\lib.win-amd64-cpython-37\Crypto\SelfTest\Cipher copying lib\Crypto\SelfTest\Cipher\test_DES.py -> build\lib.win-amd64-cpython-37\Crypto\SelfTest\Cipher copying lib\Crypto\SelfTest\Cipher\test_DES3.py -> build\lib.win-amd64-cpython-37\Crypto\SelfTest\Cipher copying lib\Crypto\SelfTest\Cipher\test_pkcs1_15.py -> build\lib.win-amd64-cpython-37\Crypto\SelfTest\Cipher copying lib\Crypto\SelfTest\Cipher\test_pkcs1_oaep.py -> build\lib.win-amd64-cpython-37\Crypto\SelfTest\Cipher copying lib\Crypto\SelfTest\Cipher\test_XOR.py -> build\lib.win-amd64-cpython-37\Crypto\SelfTest\Cipher copying lib\Crypto\SelfTest\Cipher\__init__.py -> build\lib.win-amd64-cpython-37\Crypto\SelfTest\Cipher creating build\lib.win-amd64-cpython-37\Crypto\SelfTest\Hash copying lib\Crypto\SelfTest\Hash\common.py -> build\lib.win-amd64-cpython-37\Crypto\SelfTest\Hash copying lib\Crypto\SelfTest\Hash\test_HMAC.py -> build\lib.win-amd64-cpython-37\Crypto\SelfTest\Hash copying lib\Crypto\SelfTest\Hash\test_MD2.py -> build\lib.win-amd64-cpython-37\Crypto\SelfTest\Hash copying lib\Crypto\SelfTest\Hash\test_MD4.py -> build\lib.win-amd64-cpython-37\Crypto\SelfTest\Hash copying lib\Crypto\SelfTest\Hash\test_MD5.py -> build\lib.win-amd64-cpython-37\Crypto\SelfTest\Hash copying lib\Crypto\SelfTest\Hash\test_RIPEMD.py -> build\lib.win-amd64-cpython-37\Crypto\SelfTest\Hash copying lib\Crypto\SelfTest\Hash\test_SHA.py -> build\lib.win-amd64-cpython-37\Crypto\SelfTest\Hash copying lib\Crypto\SelfTest\Hash\test_SHA224.py -> build\lib.win-amd64-cpython-37\Crypto\SelfTest\Hash copying lib\Crypto\SelfTest\Hash\test_SHA256.py -> build\lib.win-amd64-cpython-37\Crypto\SelfTest\Hash copying lib\Crypto\SelfTest\Hash\test_SHA384.py -> build\lib.win-amd64-cpython-37\Crypto\SelfTest\Hash copying lib\Crypto\SelfTest\Hash\test_SHA512.py -> build\lib.win-amd64-cpython-37\Crypto\SelfTest\Hash copying lib\Crypto\SelfTest\Hash\__init__.py -> build\lib.win-amd64-cpython-37\Crypto\SelfTest\Hash creating build\lib.win-amd64-cpython-37\Crypto\SelfTest\Protocol copying lib\Crypto\SelfTest\Protocol\test_AllOrNothing.py -> build\lib.win-amd64-cpython-37\Crypto\SelfTest\Protocol copying lib\Crypto\SelfTest\Protocol\test_chaffing.py -> build\lib.win-amd64-cpython-37\Crypto\SelfTest\Protocol copying lib\Crypto\SelfTest\Protocol\test_KDF.py -> build\lib.win-amd64-cpython-37\Crypto\SelfTest\Protocol copying lib\Crypto\SelfTest\Protocol\test_rfc1751.py -> build\lib.win-amd64-cpython-37\Crypto\SelfTest\Protocol copying lib\Crypto\SelfTest\Protocol\__init__.py -> build\lib.win-amd64-cpython-37\Crypto\SelfTest\Protocol creating build\lib.win-amd64-cpython-37\Crypto\SelfTest\PublicKey copying lib\Crypto\SelfTest\PublicKey\test_DSA.py -> build\lib.win-amd64-cpython-37\Crypto\SelfTest\PublicKey copying lib\Crypto\SelfTest\PublicKey\test_ElGamal.py -> build\lib.win-amd64-cpython-37\Crypto\SelfTest\PublicKey copying lib\Crypto\SelfTest\PublicKey\test_importKey.py -> build\lib.win-amd64-cpython-37\Crypto\SelfTest\PublicKey copying lib\Crypto\SelfTest\PublicKey\test_RSA.py -> build\lib.win-amd64-cpython-37\Crypto\SelfTest\PublicKey copying lib\Crypto\SelfTest\PublicKey\__init__.py -> build\lib.win-amd64-cpython-37\Crypto\SelfTest\PublicKey creating build\lib.win-amd64-cpython-37\Crypto\SelfTest\Random copying lib\Crypto\SelfTest\Random\test_random.py -> build\lib.win-amd64-cpython-37\Crypto\SelfTest\Random copying lib\Crypto\SelfTest\Random\test_rpoolcompat.py -> build\lib.win-amd64-cpython-37\Crypto\SelfTest\Random copying lib\Crypto\SelfTest\Random\test__UserFriendlyRNG.py -> build\lib.win-amd64-cpython-37\Crypto\SelfTest\Random copying lib\Crypto\SelfTest\Random\__init__.py -> build\lib.win-amd64-cpython-37\Crypto\SelfTest\Random creating build\lib.win-amd64-cpython-37\Crypto\SelfTest\Random\Fortuna copying lib\Crypto\SelfTest\Random\Fortuna\test_FortunaAccumulator.py -> build\lib.win-amd64-cpython-37\Crypto\SelfTest\Random\Fortuna copying lib\Crypto\SelfTest\Random\Fortuna\test_FortunaGenerator.py -> build\lib.win-amd64-cpython-37\Crypto\SelfTest\Random\Fortuna copying lib\Crypto\SelfTest\Random\Fortuna\test_SHAd256.py -> build\lib.win-amd64-cpython-37\Crypto\SelfTest\Random\Fortuna copying lib\Crypto\SelfTest\Random\Fortuna\__init__.py -> build\lib.win-amd64-cpython-37\Crypto\SelfTest\Random\Fortuna creating build\lib.win-amd64-cpython-37\Crypto\SelfTest\Random\OSRNG copying lib\Crypto\SelfTest\Random\OSRNG\test_fallback.py -> build\lib.win-amd64-cpython-37\Crypto\SelfTest\Random\OSRNG copying lib\Crypto\SelfTest\Random\OSRNG\test_generic.py -> build\lib.win-amd64-cpython-37\Crypto\SelfTest\Random\OSRNG copying lib\Crypto\SelfTest\Random\OSRNG\test_nt.py -> build\lib.win-amd64-cpython-37\Crypto\SelfTest\Random\OSRNG copying lib\Crypto\SelfTest\Random\OSRNG\test_posix.py -> build\lib.win-amd64-cpython-37\Crypto\SelfTest\Random\OSRNG copying lib\Crypto\SelfTest\Random\OSRNG\test_winrandom.py -> build\lib.win-amd64-cpython-37\Crypto\SelfTest\Random\OSRNG copying lib\Crypto\SelfTest\Random\OSRNG\__init__.py -> build\lib.win-amd64-cpython-37\Crypto\SelfTest\Random\OSRNG creating build\lib.win-amd64-cpython-37\Crypto\SelfTest\Util copying lib\Crypto\SelfTest\Util\test_asn1.py -> build\lib.win-amd64-cpython-37\Crypto\SelfTest\Util copying lib\Crypto\SelfTest\Util\test_Counter.py -> build\lib.win-amd64-cpython-37\Crypto\SelfTest\Util copying lib\Crypto\SelfTest\Util\test_number.py -> build\lib.win-amd64-cpython-37\Crypto\SelfTest\Util copying lib\Crypto\SelfTest\Util\test_winrandom.py -> build\lib.win-amd64-cpython-37\Crypto\SelfTest\Util copying lib\Crypto\SelfTest\Util\__init__.py -> build\lib.win-amd64-cpython-37\Crypto\SelfTest\Util creating build\lib.win-amd64-cpython-37\Crypto\SelfTest\Signature copying lib\Crypto\SelfTest\Signature\test_pkcs1_15.py -> build\lib.win-amd64-cpython-37\Crypto\SelfTest\Signature copying lib\Crypto\SelfTest\Signature\test_pkcs1_pss.py -> build\lib.win-amd64-cpython-37\Crypto\SelfTest\Signature copying lib\Crypto\SelfTest\Signature\__init__.py -> build\lib.win-amd64-cpython-37\Crypto\SelfTest\Signature creating build\lib.win-amd64-cpython-37\Crypto\Protocol copying lib\Crypto\Protocol\AllOrNothing.py -> build\lib.win-amd64-cpython-37\Crypto\Protocol copying lib\Crypto\Protocol\Chaffing.py -> build\lib.win-amd64-cpython-37\Crypto\Protocol copying lib\Crypto\Protocol\KDF.py -> build\lib.win-amd64-cpython-37\Crypto\Protocol copying lib\Crypto\Protocol\__init__.py -> build\lib.win-amd64-cpython-37\Crypto\Protocol creating build\lib.win-amd64-cpython-37\Crypto\PublicKey copying lib\Crypto\PublicKey\DSA.py -> build\lib.win-amd64-cpython-37\Crypto\PublicKey copying lib\Crypto\PublicKey\ElGamal.py -> build\lib.win-amd64-cpython-37\Crypto\PublicKey copying lib\Crypto\PublicKey\pubkey.py -> build\lib.win-amd64-cpython-37\Crypto\PublicKey copying lib\Crypto\PublicKey\RSA.py -> build\lib.win-amd64-cpython-37\Crypto\PublicKey copying lib\Crypto\PublicKey\_DSA.py -> build\lib.win-amd64-cpython-37\Crypto\PublicKey copying lib\Crypto\PublicKey\_RSA.py -> build\lib.win-amd64-cpython-37\Crypto\PublicKey copying lib\Crypto\PublicKey\_slowmath.py -> build\lib.win-amd64-cpython-37\Crypto\PublicKey copying lib\Crypto\PublicKey\__init__.py -> build\lib.win-amd64-cpython-37\Crypto\PublicKey creating build\lib.win-amd64-cpython-37\Crypto\Signature copying lib\Crypto\Signature\PKCS1_PSS.py -> build\lib.win-amd64-cpython-37\Crypto\Signature copying lib\Crypto\Signature\PKCS1_v1_5.py -> build\lib.win-amd64-cpython-37\Crypto\Signature copying lib\Crypto\Signature\__init__.py -> build\lib.win-amd64-cpython-37\Crypto\Signature running build_ext warning: GMP or MPIR library not found; Not building Crypto.PublicKey._fastmath. building 'Crypto.Random.OSRNG.winrandom' extension creating build\temp.win-amd64-cpython-37 creating build\temp.win-amd64-cpython-37\Release creating build\temp.win-amd64-cpython-37\Release\src "C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Tools\MSVC\14.29.30133\bin\HostX86\x64\cl.exe" /c /nologo /O2 /W3 /GL /DNDEBUG /MD -Isrc/ -Isrc/inc-msvc/ - ID:\python-venv\yinruan\alipay\include -IG:\python377\include -IG:\python377\Include "-IC:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Tools\MSVC\14.29.30133\inc lude" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\ucrt" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\shared" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\um" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\winrt" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\cppwinrt" /Tcs rc/winrand.c /Fobuild\temp.win-amd64-cpython-37\Release\src/winrand.obj winrand.c C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\ucrt\inttypes.h(31): error C2061: 语法错误: 标识符“intmax_t” C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\ucrt\inttypes.h(32): error C2061: 语法错误: 标识符“rem” C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\ucrt\inttypes.h(32): error C2059: 语法错误:“;” C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\ucrt\inttypes.h(33): error C2059: 语法错误:“}” C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\ucrt\inttypes.h(35): error C2061: 语法错误: 标识符“imaxdiv_t” C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\ucrt\inttypes.h(35): error C2059: 语法错误:“;” C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\ucrt\inttypes.h(45): error C2143: 语法错误: 缺少“{”(在“__cdecl”的前面) C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\ucrt\inttypes.h(46): error C2146: 语法错误: 缺少“)”(在标识符“_Number”的前面) C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\ucrt\inttypes.h(46): error C2061: 语法错误: 标识符“_Number” C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\ucrt\inttypes.h(46): error C2059: 语法错误:“;” C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\ucrt\inttypes.h(47): error C2059: 语法错误:“)” C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\ucrt\inttypes.h(50): error C2143: 语法错误: 缺少“{”(在“__cdecl”的前面) C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\ucrt\inttypes.h(51): error C2146: 语法错误: 缺少“)”(在标识符“_Numerator”的前面) C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\ucrt\inttypes.h(51): error C2061: 语法错误: 标识符“_Numerator” C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\ucrt\inttypes.h(51): error C2059: 语法错误:“;” C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\ucrt\inttypes.h(51): error C2059: 语法错误:“,” C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\ucrt\inttypes.h(53): error C2059: 语法错误:“)” C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\ucrt\inttypes.h(55): error C2143: 语法错误: 缺少“{”(在“__cdecl”的前面) C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\ucrt\inttypes.h(61): error C2143: 语法错误: 缺少“{”(在“__cdecl”的前面) C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\ucrt\inttypes.h(68): error C2143: 语法错误: 缺少“{”(在“__cdecl”的前面) C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\ucrt\inttypes.h(74): error C2143: 语法错误: 缺少“{”(在“__cdecl”的前面) C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\ucrt\inttypes.h(81): error C2143: 语法错误: 缺少“{”(在“__cdecl”的前面) C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\ucrt\inttypes.h(87): error C2143: 语法错误: 缺少“{”(在“__cdecl”的前面) C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\ucrt\inttypes.h(94): error C2143: 语法错误: 缺少“{”(在“__cdecl”的前面) C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\ucrt\inttypes.h(100): error C2143: 语法错误: 缺少“{”(在“__cdecl”的前面) error: command 'C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\BuildTools\\VC\\Tools\\MSVC\\14.29.30133\\bin\\HostX86\\x64\\cl.exe' failed with exit code 2 [end of output] note: This error originates from a subprocess, and is likely not a problem with pip. ERROR: Failed building wheel for pycrypto Running setup.py clean for pycrypto Failed to build pycrypto Installing collected packages: pycrypto, ptyprocess, pbus, onetable, oneimage, kafka-python, cached-property, billiard, zipp, wechat-sdk, vine, urllib3, uniapi, typing_extensions, traitlets, tornado, sqlparse, qiniu, PyYAML, PyMySQL, pycparser, pyasn1, pmongo, Pillow, pika, lxml, jmespath, et-xmlfile, Auto-Python-2014, aliyunsdkcore, rsa, openpyxl, Naked, im portlib-metadata, cffi, async-timeout, asgiref, amqp, redis, kombu, Django, cryptography, crypto, click, alipay-sdk-python, django-redis, click-repl, click-plugins, click-didyoumea n, aliyun-python-sdk-core, celery, aliyun-python-sdk-dysmsapi Running setup.py install for pycrypto ... error error: subprocess-exited-with-error × Running setup.py install for pycrypto did not run successfully. │ exit code: 1 ╰─> [181 lines of output] running install D:\python-venv\yinruan\alipay\lib\site-packages\setuptools\command\install.py:37: SetuptoolsDeprecationWarning: setup.py install is deprecated. Use build and pip and other st andards-based tools. setuptools.SetuptoolsDeprecationWarning, running build running build_py creating build creating build\lib.win-amd64-cpython-37 creating build\lib.win-amd64-cpython-37\Crypto copying lib\Crypto\pct_warnings.py -> build\lib.win-amd64-cpython-37\Crypto copying lib\Crypto\__init__.py -> build\lib.win-amd64-cpython-37\Crypto creating build\lib.win-amd64-cpython-37\Crypto\Hash copying lib\Crypto\Hash\hashalgo.py -> build\lib.win-amd64-cpython-37\Crypto\Hash copying lib\Crypto\Hash\HMAC.py -> build\lib.win-amd64-cpython-37\Crypto\Hash copying lib\Crypto\Hash\MD2.py -> build\lib.win-amd64-cpython-37\Crypto\Hash copying lib\Crypto\Hash\MD4.py -> build\lib.win-amd64-cpython-37\Crypto\Hash copying lib\Crypto\Hash\MD5.py -> build\lib.win-amd64-cpython-37\Crypto\Hash copying lib\Crypto\Hash\RIPEMD.py -> build\lib.win-amd64-cpython-37\Crypto\Hash copying lib\Crypto\Hash\SHA.py -> build\lib.win-amd64-cpython-37\Crypto\Hash copying lib\Crypto\Hash\SHA224.py -> build\lib.win-amd64-cpython-37\Crypto\Hash copying lib\Crypto\Hash\SHA256.py -> build\lib.win-amd64-cpython-37\Crypto\Hash copying lib\Crypto\Hash\SHA384.py -> build\lib.win-amd64-cpython-37\Crypto\Hash copying lib\Crypto\Hash\SHA512.py -> build\lib.win-amd64-cpython-37\Crypto\Hash copying lib\Crypto\Hash\__init__.py -> build\lib.win-amd64-cpython-37\Crypto\Hash creating build\lib.win-amd64-cpython-37\Crypto\Cipher copying lib\Crypto\Cipher\AES.py -> build\lib.win-amd64-cpython-37\Crypto\Cipher copying lib\Crypto\Cipher\ARC2.py -> build\lib.win-amd64-cpython-37\Crypto\Cipher copying lib\Crypto\Cipher\ARC4.py -> build\lib.win-amd64-cpython-37\Crypto\Cipher copying lib\Crypto\Cipher\blockalgo.py -> build\lib.win-amd64-cpython-37\Crypto\Cipher copying lib\Crypto\Cipher\Blowfish.py -> build\lib.win-amd64-cpython-37\Crypto\Cipher copying lib\Crypto\Cipher\CAST.py -> build\lib.win-amd64-cpython-37\Crypto\Cipher copying lib\Crypto\Cipher\DES.py -> build\lib.win-amd64-cpython-37\Crypto\Cipher copying lib\Crypto\Cipher\DES3.py -> build\lib.win-amd64-cpython-37\Crypto\Cipher copying lib\Crypto\Cipher\PKCS1_OAEP.py -> build\lib.win-amd64-cpython-37\Crypto\Cipher copying lib\Crypto\Cipher\PKCS1_v1_5.py -> build\lib.win-amd64-cpython-37\Crypto\Cipher copying lib\Crypto\Cipher\XOR.py -> build\lib.win-amd64-cpython-37\Crypto\Cipher copying lib\Crypto\Cipher\__init__.py -> build\lib.win-amd64-cpython-37\Crypto\Cipher creating build\lib.win-amd64-cpython-37\Crypto\Util copying lib\Crypto\Util\asn1.py -> build\lib.win-amd64-cpython-37\Crypto\Util copying lib\Crypto\Util\Counter.py -> build\lib.win-amd64-cpython-37\Crypto\Util copying lib\Crypto\Util\number.py -> build\lib.win-amd64-cpython-37\Crypto\Util copying lib\Crypto\Util\py3compat.py -> build\lib.win-amd64-cpython-37\Crypto\Util copying lib\Crypto\Util\randpool.py -> build\lib.win-amd64-cpython-37\Crypto\Util copying lib\Crypto\Util\RFC1751.py -> build\lib.win-amd64-cpython-37\Crypto\Util copying lib\Crypto\Util\winrandom.py -> build\lib.win-amd64-cpython-37\Crypto\Util copying lib\Crypto\Util\_number_new.py -> build\lib.win-amd64-cpython-37\Crypto\Util copying lib\Crypto\Util\__init__.py -> build\lib.win-amd64-cpython-37\Crypto\Util creating build\lib.win-amd64-cpython-37\Crypto\Random copying lib\Crypto\Random\random.py -> build\lib.win-amd64-cpython-37\Crypto\Random copying lib\Crypto\Random\_UserFriendlyRNG.py -> build\lib.win-amd64-cpython-37\Crypto\Random copying lib\Crypto\Random\__init__.py -> build\lib.win-amd64-cpython-37\Crypto\Random creating build\lib.win-amd64-cpython-37\Crypto\Random\Fortuna copying lib\Crypto\Random\Fortuna\FortunaAccumulator.py -> build\lib.win-amd64-cpython-37\Crypto\Random\Fortuna copying lib\Crypto\Random\Fortuna\FortunaGenerator.py -> build\lib.win-amd64-cpython-37\Crypto\Random\Fortuna copying lib\Crypto\Random\Fortuna\SHAd256.py -> build\lib.win-amd64-cpython-37\Crypto\Random\Fortuna copying lib\Crypto\Random\Fortuna\__init__.py -> build\lib.win-amd64-cpython-37\Crypto\Random\Fortuna creating build\lib.win-amd64-cpython-37\Crypto\Random\OSRNG copying lib\Crypto\Random\OSRNG\fallback.py -> build\lib.win-amd64-cpython-37\Crypto\Random\OSRNG copying lib\Crypto\Random\OSRNG\nt.py -> build\lib.win-amd64-cpython-37\Crypto\Random\OSRNG copying lib\Crypto\Random\OSRNG\posix.py -> build\lib.win-amd64-cpython-37\Crypto\Random\OSRNG copying lib\Crypto\Random\OSRNG\rng_base.py -> build\lib.win-amd64-cpython-37\Crypto\Random\OSRNG copying lib\Crypto\Random\OSRNG\__init__.py -> build\lib.win-amd64-cpython-37\Crypto\Random\OSRNG creating build\lib.win-amd64-cpython-37\Crypto\SelfTest copying lib\Crypto\SelfTest\st_common.py -> build\lib.win-amd64-cpython-37\Crypto\SelfTest copying lib\Crypto\SelfTest\__init__.py -> build\lib.win-amd64-cpython-37\Crypto\SelfTest creating build\lib.win-amd64-cpython-37\Crypto\SelfTest\Cipher copying lib\Crypto\SelfTest\Cipher\common.py -> build\lib.win-amd64-cpython-37\Crypto\SelfTest\Cipher copying lib\Crypto\SelfTest\Cipher\test_AES.py -> build\lib.win-amd64-cpython-37\Crypto\SelfTest\Cipher copying lib\Crypto\SelfTest\Cipher\test_ARC2.py -> build\lib.win-amd64-cpython-37\Crypto\SelfTest\Cipher copying lib\Crypto\SelfTest\Cipher\test_ARC4.py -> build\lib.win-amd64-cpython-37\Crypto\SelfTest\Cipher copying lib\Crypto\SelfTest\Cipher\test_Blowfish.py -> build\lib.win-amd64-cpython-37\Crypto\SelfTest\Cipher copying lib\Crypto\SelfTest\Cipher\test_CAST.py -> build\lib.win-amd64-cpython-37\Crypto\SelfTest\Cipher copying lib\Crypto\SelfTest\Cipher\test_DES.py -> build\lib.win-amd64-cpython-37\Crypto\SelfTest\Cipher copying lib\Crypto\SelfTest\Cipher\test_DES3.py -> build\lib.win-amd64-cpython-37\Crypto\SelfTest\Cipher copying lib\Crypto\SelfTest\Cipher\test_pkcs1_15.py -> build\lib.win-amd64-cpython-37\Crypto\SelfTest\Cipher copying lib\Crypto\SelfTest\Cipher\test_pkcs1_oaep.py -> build\lib.win-amd64-cpython-37\Crypto\SelfTest\Cipher copying lib\Crypto\SelfTest\Cipher\test_XOR.py -> build\lib.win-amd64-cpython-37\Crypto\SelfTest\Cipher copying lib\Crypto\SelfTest\Cipher\__init__.py -> build\lib.win-amd64-cpython-37\Crypto\SelfTest\Cipher creating build\lib.win-amd64-cpython-37\Crypto\SelfTest\Hash copying lib\Crypto\SelfTest\Hash\common.py -> build\lib.win-amd64-cpython-37\Crypto\SelfTest\Hash copying lib\Crypto\SelfTest\Hash\test_HMAC.py -> build\lib.win-amd64-cpython-37\Crypto\SelfTest\Hash copying lib\Crypto\SelfTest\Hash\test_MD2.py -> build\lib.win-amd64-cpython-37\Crypto\SelfTest\Hash copying lib\Crypto\SelfTest\Hash\test_MD4.py -> build\lib.win-amd64-cpython-37\Crypto\SelfTest\Hash copying lib\Crypto\SelfTest\Hash\test_MD5.py -> build\lib.win-amd64-cpython-37\Crypto\SelfTest\Hash copying lib\Crypto\SelfTest\Hash\test_RIPEMD.py -> build\lib.win-amd64-cpython-37\Crypto\SelfTest\Hash copying lib\Crypto\SelfTest\Hash\test_SHA.py -> build\lib.win-amd64-cpython-37\Crypto\SelfTest\Hash copying lib\Crypto\SelfTest\Hash\test_SHA224.py -> build\lib.win-amd64-cpython-37\Crypto\SelfTest\Hash copying lib\Crypto\SelfTest\Hash\test_SHA256.py -> build\lib.win-amd64-cpython-37\Crypto\SelfTest\Hash copying lib\Crypto\SelfTest\Hash\test_SHA384.py -> build\lib.win-amd64-cpython-37\Crypto\SelfTest\Hash copying lib\Crypto\SelfTest\Hash\test_SHA512.py -> build\lib.win-amd64-cpython-37\Crypto\SelfTest\Hash copying lib\Crypto\SelfTest\Hash\__init__.py -> build\lib.win-amd64-cpython-37\Crypto\SelfTest\Hash creating build\lib.win-amd64-cpython-37\Crypto\SelfTest\Protocol copying lib\Crypto\SelfTest\Protocol\test_AllOrNothing.py -> build\lib.win-amd64-cpython-37\Crypto\SelfTest\Protocol copying lib\Crypto\SelfTest\Protocol\test_chaffing.py -> build\lib.win-amd64-cpython-37\Crypto\SelfTest\Protocol copying lib\Crypto\SelfTest\Protocol\test_KDF.py -> build\lib.win-amd64-cpython-37\Crypto\SelfTest\Protocol copying lib\Crypto\SelfTest\Protocol\test_rfc1751.py -> build\lib.win-amd64-cpython-37\Crypto\SelfTest\Protocol copying lib\Crypto\SelfTest\Protocol\__init__.py -> build\lib.win-amd64-cpython-37\Crypto\SelfTest\Protocol creating build\lib.win-amd64-cpython-37\Crypto\SelfTest\PublicKey copying lib\Crypto\SelfTest\PublicKey\test_DSA.py -> build\lib.win-amd64-cpython-37\Crypto\SelfTest\PublicKey copying lib\Crypto\SelfTest\PublicKey\test_ElGamal.py -> build\lib.win-amd64-cpython-37\Crypto\SelfTest\PublicKey copying lib\Crypto\SelfTest\PublicKey\test_importKey.py -> build\lib.win-amd64-cpython-37\Crypto\SelfTest\PublicKey copying lib\Crypto\SelfTest\PublicKey\test_RSA.py -> build\lib.win-amd64-cpython-37\Crypto\SelfTest\PublicKey copying lib\Crypto\SelfTest\PublicKey\__init__.py -> build\lib.win-amd64-cpython-37\Crypto\SelfTest\PublicKey creating build\lib.win-amd64-cpython-37\Crypto\SelfTest\Random copying lib\Crypto\SelfTest\Random\test_random.py -> build\lib.win-amd64-cpython-37\Crypto\SelfTest\Random copying lib\Crypto\SelfTest\Random\test_rpoolcompat.py -> build\lib.win-amd64-cpython-37\Crypto\SelfTest\Random copying lib\Crypto\SelfTest\Random\test__UserFriendlyRNG.py -> build\lib.win-amd64-cpython-37\Crypto\SelfTest\Random copying lib\Crypto\SelfTest\Random\__init__.py -> build\lib.win-amd64-cpython-37\Crypto\SelfTest\Random creating build\lib.win-amd64-cpython-37\Crypto\SelfTest\Random\Fortuna copying lib\Crypto\SelfTest\Random\Fortuna\test_FortunaAccumulator.py -> build\lib.win-amd64-cpython-37\Crypto\SelfTest\Random\Fortuna copying lib\Crypto\SelfTest\Random\Fortuna\test_FortunaGenerator.py -> build\lib.win-amd64-cpython-37\Crypto\SelfTest\Random\Fortuna copying lib\Crypto\SelfTest\Random\Fortuna\test_SHAd256.py -> build\lib.win-amd64-cpython-37\Crypto\SelfTest\Random\Fortuna copying lib\Crypto\SelfTest\Random\Fortuna\__init__.py -> build\lib.win-amd64-cpython-37\Crypto\SelfTest\Random\Fortuna creating build\lib.win-amd64-cpython-37\Crypto\SelfTest\Random\OSRNG copying lib\Crypto\SelfTest\Random\OSRNG\test_fallback.py -> build\lib.win-amd64-cpython-37\Crypto\SelfTest\Random\OSRNG copying lib\Crypto\SelfTest\Random\OSRNG\test_generic.py -> build\lib.win-amd64-cpython-37\Crypto\SelfTest\Random\OSRNG copying lib\Crypto\SelfTest\Random\OSRNG\test_nt.py -> build\lib.win-amd64-cpython-37\Crypto\SelfTest\Random\OSRNG copying lib\Crypto\SelfTest\Random\OSRNG\test_posix.py -> build\lib.win-amd64-cpython-37\Crypto\SelfTest\Random\OSRNG copying lib\Crypto\SelfTest\Random\OSRNG\test_winrandom.py -> build\lib.win-amd64-cpython-37\Crypto\SelfTest\Random\OSRNG copying lib\Crypto\SelfTest\Random\OSRNG\__init__.py -> build\lib.win-amd64-cpython-37\Crypto\SelfTest\Random\OSRNG creating build\lib.win-amd64-cpython-37\Crypto\SelfTest\Util copying lib\Crypto\SelfTest\Util\test_asn1.py -> build\lib.win-amd64-cpython-37\Crypto\SelfTest\Util copying lib\Crypto\SelfTest\Util\test_Counter.py -> build\lib.win-amd64-cpython-37\Crypto\SelfTest\Util copying lib\Crypto\SelfTest\Util\test_number.py -> build\lib.win-amd64-cpython-37\Crypto\SelfTest\Util copying lib\Crypto\SelfTest\Util\test_winrandom.py -> build\lib.win-amd64-cpython-37\Crypto\SelfTest\Util copying lib\Crypto\SelfTest\Util\__init__.py -> build\lib.win-amd64-cpython-37\Crypto\SelfTest\Util creating build\lib.win-amd64-cpython-37\Crypto\SelfTest\Signature copying lib\Crypto\SelfTest\Signature\test_pkcs1_15.py -> build\lib.win-amd64-cpython-37\Crypto\SelfTest\Signature copying lib\Crypto\SelfTest\Signature\test_pkcs1_pss.py -> build\lib.win-amd64-cpython-37\Crypto\SelfTest\Signature copying lib\Crypto\SelfTest\Signature\__init__.py -> build\lib.win-amd64-cpython-37\Crypto\SelfTest\Signature creating build\lib.win-amd64-cpython-37\Crypto\Protocol copying lib\Crypto\Protocol\AllOrNothing.py -> build\lib.win-amd64-cpython-37\Crypto\Protocol copying lib\Crypto\Protocol\Chaffing.py -> build\lib.win-amd64-cpython-37\Crypto\Protocol copying lib\Crypto\Protocol\KDF.py -> build\lib.win-amd64-cpython-37\Crypto\Protocol copying lib\Crypto\Protocol\__init__.py -> build\lib.win-amd64-cpython-37\Crypto\Protocol creating build\lib.win-amd64-cpython-37\Crypto\PublicKey copying lib\Crypto\PublicKey\DSA.py -> build\lib.win-amd64-cpython-37\Crypto\PublicKey copying lib\Crypto\PublicKey\ElGamal.py -> build\lib.win-amd64-cpython-37\Crypto\PublicKey copying lib\Crypto\PublicKey\pubkey.py -> build\lib.win-amd64-cpython-37\Crypto\PublicKey copying lib\Crypto\PublicKey\RSA.py -> build\lib.win-amd64-cpython-37\Crypto\PublicKey copying lib\Crypto\PublicKey\_DSA.py -> build\lib.win-amd64-cpython-37\Crypto\PublicKey copying lib\Crypto\PublicKey\_RSA.py -> build\lib.win-amd64-cpython-37\Crypto\PublicKey copying lib\Crypto\PublicKey\_slowmath.py -> build\lib.win-amd64-cpython-37\Crypto\PublicKey copying lib\Crypto\PublicKey\__init__.py -> build\lib.win-amd64-cpython-37\Crypto\PublicKey creating build\lib.win-amd64-cpython-37\Crypto\Signature copying lib\Crypto\Signature\PKCS1_PSS.py -> build\lib.win-amd64-cpython-37\Crypto\Signature copying lib\Crypto\Signature\PKCS1_v1_5.py -> build\lib.win-amd64-cpython-37\Crypto\Signature copying lib\Crypto\Signature\__init__.py -> build\lib.win-amd64-cpython-37\Crypto\Signature running build_ext warning: GMP or MPIR library not found; Not building Crypto.PublicKey._fastmath. building 'Crypto.Random.OSRNG.winrandom' extension creating build\temp.win-amd64-cpython-37 creating build\temp.win-amd64-cpython-37\Release creating build\temp.win-amd64-cpython-37\Release\src "C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Tools\MSVC\14.29.30133\bin\HostX86\x64\cl.exe" /c /nologo /O2 /W3 /GL /DNDEBUG /MD -Isrc/ -Isrc/inc-msvc/ - ID:\python-venv\yinruan\alipay\include -IG:\python377\include -IG:\python377\Include "-IC:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Tools\MSVC\14.29.30133\inc lude" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\ucrt" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\shared" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\um" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\winrt" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\cppwinrt" /Tcs rc/winrand.c /Fobuild\temp.win-amd64-cpython-37\Release\src/winrand.obj winrand.c C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\ucrt\inttypes.h(31): error C2061: 语法错误: 标识符“intmax_t” C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\ucrt\inttypes.h(32): error C2061: 语法错误: 标识符“rem” C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\ucrt\inttypes.h(32): error C2059: 语法错误:“;” C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\ucrt\inttypes.h(33): error C2059: 语法错误:“}” C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\ucrt\inttypes.h(35): error C2061: 语法错误: 标识符“imaxdiv_t” C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\ucrt\inttypes.h(35): error C2059: 语法错误:“;” C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\ucrt\inttypes.h(45): error C2143: 语法错误: 缺少“{”(在“__cdecl”的前面) C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\ucrt\inttypes.h(46): error C2146: 语法错误: 缺少“)”(在标识符“_Number”的前面) C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\ucrt\inttypes.h(46): error C2061: 语法错误: 标识符“_Number” C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\ucrt\inttypes.h(46): error C2059: 语法错误:“;” C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\ucrt\inttypes.h(47): error C2059: 语法错误:“)” C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\ucrt\inttypes.h(50): error C2143: 语法错误: 缺少“{”(在“__cdecl”的前面) C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\ucrt\inttypes.h(51): error C2146: 语法错误: 缺少“)”(在标识符“_Numerator”的前面) C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\ucrt\inttypes.h(51): error C2061: 语法错误: 标识符“_Numerator” C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\ucrt\inttypes.h(51): error C2059: 语法错误:“;” C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\ucrt\inttypes.h(51): error C2059: 语法错误:“,” C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\ucrt\inttypes.h(53): error C2059: 语法错误:“)” C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\ucrt\inttypes.h(55): error C2143: 语法错误: 缺少“{”(在“__cdecl”的前面) C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\ucrt\inttypes.h(61): error C2143: 语法错误: 缺少“{”(在“__cdecl”的前面) C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\ucrt\inttypes.h(68): error C2143: 语法错误: 缺少“{”(在“__cdecl”的前面) C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\ucrt\inttypes.h(74): error C2143: 语法错误: 缺少“{”(在“__cdecl”的前面) C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\ucrt\inttypes.h(81): error C2143: 语法错误: 缺少“{”(在“__cdecl”的前面) C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\ucrt\inttypes.h(87): error C2143: 语法错误: 缺少“{”(在“__cdecl”的前面) C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\ucrt\inttypes.h(100): error C2143: 语法错误: 缺少“{”(在“__cdecl”的前面) error: command 'C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\BuildTools\\VC\\Tools\\MSVC\\14.29.30133\\bin\\HostX86\\x64\\cl.exe' failed with exit code 2 [end of output] note: This error originates from a subprocess, and is likely not a problem with pip. error: legacy-install-failure {/collapse-item}{/collapse}解决方案主要是提示C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\ucrt\inttypes.h有个语法错误打开相应的文件C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\ucrt\inttypes.h在顶部写入#define intmax_t long long #define uintmax_t unsigned long long参考内容: 参考内容
2023年06月08日
47 阅读
0 评论
0 点赞
2023-04-04
idea接入chatGPT
在文件,设置,插件直接搜索Tabnine AI,然后安装,需要用邮箱注册一下
2023年04月04日
39 阅读
0 评论
0 点赞
2022-08-24
Django orm 使用case when排序
from django.db.models import Case, When # 先取出商品id和销量 ratings_tuples = [(r.id, r.sales) for r in Product.objects.filter()] # 根据销量降序排序 ratings_list = sorted(ratings_typles, key=lambda x: x[1], reverse=True) print ratings_list [(20L, 1000L), (2187L, 503L), (7715L, 483L), (7711L, 430L), (7720L, 421L), (7717L, 353L), (7719L, 352L), (7712L, 344L), (883L, 300L), (7718L, 276L), (7716L, 219L), (1935L, 110L), (592L, 100L), (3293L, 65L), (2439L, 56L), (7671L, 50L), (1597L, 30L), (7705L, 30L), (777L, 20L), (2292L, 20L), (1563L, 19L), (7706L, 18L), (2L, 16L), (7012L, 16L), (1255L, 12L), (15L, 11L), (1183L, 11L), (3101L, 11L), (7710L, 11L), (59L, 10L), (1256L, 10L), (4029L, 10L), (5831L, 10L), (7241L, 10L), (1L, 9L), (50L, 9L), (1933L, 9L), (2613L, 8L), (18L, 7L), (524L, 6L), (1934L, 6L), (221L, 5L), (1601L, 5L), (1702L, 5L), (1855L, 5L), (5195L, 5L), (7073L, 5L), (7709L, 5L), (7L, 4L), (695L, 4L), (1018L, 4L), (2303L, 4L), (2674L, 4L), (3671L, 4L), (4435L, 4L), (7669L, 4L), (264L, 3L), (589L, 3L), (2526L, 3L), (5115L, 3L), (5305L, 3L), (7616L, 3L), (7695L, 3L), (17L, 2L), (77L, 2L), (770L, 2L), (1474L, 2L), (1591L, 2L), (1961L, 2L), (2763L, 2L), (3670L, 2L), (4434L, 2L), (7479L, 2L), (3L, 1L), (5L, 1L), (16L, 1L), (19... # 将排序后的id放在一个列表里面 pk_list = [idx for idx, sales in ratings_list] # 根据这个id进行case when的排序 preserved = Case(*[When(pk=pk, then=pos) for pos, pk in enumerate(pk_list)]) query = Product.objects.filter(pk__in=pk_list).order_by(preserved)
2022年08月24日
36 阅读
0 评论
1 点赞
2022-07-26
apscheduler cron定时任务触发接口
from apscheduler.schedulers.blocking import BlockingScheduler class Timing: def __init__(self, start_date, end_date, hour=None): self.start_date = start_date self.end_date = end_date self.hour = hour def cron(self, job, *value_list): """cron格式 在特定时间周期性地触发""" # year (int 或 str) – 年,4位数字 # month (int 或 str) – 月 (范围1-12) # day (int 或 str) – 日 (范围1-31) # week (int 或 str) – 周 (范围1-53) # day_of_week (int 或 str) – 周内第几天或者星期几 (范围0-6 或者 mon,tue,wed,thu,fri,sat,sun) # hour (int 或 str) – 时 (范围0-23) # minute (int 或 str) – 分 (范围0-59) # second (int 或 str) – 秒 (范围0-59) # start_date (datetime 或 str) – 最早开始日期(包含) # end_date (datetime 或 str) – 分 最晚结束时间(包含) # timezone (datetime.tzinfo 或str) – 指定时区 scheduler = BlockingScheduler() scheduler.add_job(job, 'cron', start_date=self.start_date, end_date=self.end_date, hour=self.hour, args=[*value_list]) scheduler.start() def interval(self, job, *value_list): """interval格式 周期触发任务""" # weeks (int) - 间隔几周 # days (int) - 间隔几天 # hours (int) - 间隔几小时 # minutes (int) - 间隔几分钟 # seconds (int) - 间隔多少秒 # start_date (datetime 或 str) - 开始日期 # end_date (datetime 或 str) - 结束日期 # timezone (datetime.tzinfo 或str) - 时区 scheduler = BlockingScheduler() # 在 2019-08-29 22:15:00至2019-08-29 22:17:00期间,每隔1分30秒 运行一次 job 方法 scheduler.add_job(job, 'interval', minutes=1, seconds=30, start_date=self.start_date, end_date=self.end_date, args=[*value_list]) scheduler.start() @staticmethod def date(job, *value_list): """date格式 特定时间点触发""" # run_date (datetime 或 str) - 作业的运行日期或时间 # timezone (datetime.tzinfo 或 str) - 指定时区 scheduler = BlockingScheduler() # 在 2019-8-30 01:00:01 运行一次 job 方法 scheduler.add_job(job, 'date', run_date='2019-8-30 01:00:00', args=[*value_list]) scheduler.start()
2022年07月26日
37 阅读
0 评论
0 点赞
1
2