当前位置: 首页 > news >正文

Anaconda在Ubuntu下的安装与简单使用

一、参考资料

ubuntu16.04下安装&配置anaconda+tensorflow新手教程

二、安装Anaconda

  1. 下载 Miniconda镜像1 or Miniconda镜像2

    # 下载
    wget Miniconda3-py39_4.10.3-Linux-x86_64.sh# 安装
    bash Miniconda3-py39_4.10.3-Linux-x86_64.sh
    

    一路yes

  2. 安装过程中的选项

    Do you accept the license terms? [yes|no]
    >>> yesAnaconda3 will now be installed into this location:
    /home/yichao/anaconda3
    >>> 回车If you'd prefer that conda's base environment not be activated on startup, set the auto_activate_base parameter to false: conda config --set auto_activate_base false
    
  3. 取消base为默认虚拟环境

    conda config --set auto_activate_base false
    
  4. 设置环境变量
    如果自动设置环境变量,则需要手动设置环境变量。

    vim ~/.bashrc# 添加下面两行
    export PATH="/home/username/miniconda3/bin:$PATH"
    export PATH="/home/username/miniconda3/condabin:$PATH"# 重新加载当前用户配置文件
    source ~/.bashrc
    
  5. Anaconda换源

    Anaconda换源
    anaconda | 镜像站使用帮助 | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror!

    sudo gedit ~/.condarc# 清空缓存
    conda clean -i# 安装测试
    conda create -n myenv numpy
    
    channels:- defaults
    show_channel_urls: true
    default_channels:- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/msys2
    custom_channels:conda-forge: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloudmsys2: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloudbioconda: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloudmenpo: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloudpytorch: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloudpytorch-lts: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloudsimpleitk: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
    
  6. 切换Python版本

    # 打开配置文件
    vim ~/.bashrc# 添加配置
    alias python="/usr/bin/python"
    alias python3="/usr/local/bin/python3"
    alias pyana="/home/yoyo/anaconda3/bin/python3"# 更新配置
    source ~/.bashrc
    
  7. 卸载Anaconda

    # 删除anaconda相关文件夹
    rm -rf ~/miniconda3
    rm -rf ~/anaconda3
    rm -rf ~/.conda
    rm -rf ~/.condarc
    rm -rf ~/.anaconda# 删除环境变量
    # 删除关于conda部分的环境变量
    vi ~/.bashrc# 更新环境变量
    source ~/.bashrc
    

三、Anaconda的常用指令

# 1. 创建虚拟环境
conda create -n your_env_name python=X.X(2.7、3.6等)# 1.1 在指定的位置创建虚拟环境
conda create -p /PATH/TO/path# 查看所有的conda虚拟环境
conda env list   # 2. 激活虚拟环境
source activate your_env_name(虚拟环境名称)# 3. 退出虚拟环境
source deactivate your_env_name(虚拟环境名称)# 4. 删除虚拟环境
conda remove -n your_env_name(虚拟环境名称) --all# 5. 安装包
conda install package_name(包名)
conda install scrapy==1.3 # 安装指定版本的包
conda install -n 环境名 包名 # 在conda指定的某个环境中安装包# 6. 跳过安装失败的包,继续安装
conda方式
while read requirement; do conda install --yes $requirement; done < requirements.txtpip方式
while read requirement; do conda install --yes $requirement || pip install $requirement; done < requirements.txt
  1. 查看

    # 1. 查看安装了哪些包
    conda list# 2. 查看conda配置
    conda config --show# 3. 查看当前存在哪些虚拟环境
    conda env list 
    或 conda info -e
    或 conda info --envs
    
  2. 更新

    # 1. 检查更新当前conda
    conda update conda# 2. 更新anaconda
    conda update anaconda# 3. 更新所有库
    conda update --all# 4. 更新python
    conda update python
    
  3. 清理conda缓存(conda报错segment fault的时候就是需要清理缓存哦)

    conda clean -p      //删除没有用的包
    conda clean -t      //删除tar包
    conda clean -y --all //删除所有的安装包及cache
    

四、Anaconda的使用技巧

conda环境的复制(生成.yaml文件)和pip环境的复制(生成requirements.txt)

  1. 克隆环境

    # 克隆一个BBB,环境和Tensorflow一样
    conda create -n BBB --clone Tensorflow 
    
  2. 克隆环境(跨计算机)

    # 跨计算机克隆
    # 目标计算机的环境目录 /PATH/TO/home/yoyo/miniconda3/envs/monodepth2-gpu 
    conda create -n BBB --clone /PATH/TO/home/yoyo/miniconda3/envs/monodepth2-gpu 
    
  3. 导入/导出环境

    # 导出环境到yaml文件
    conda env export > env.yaml# 根据yaml文件复现环境
    conda env create -f env.yaml
    

注意.yaml 文件移植过来的环境只安装了原来环境里用 conda install 等命令直接安装的包,使用pip安装的软件包没有移植过来,需要重新安装。

# 导出安装包
pip freeze > requirements.txt# 安装
pip install -r requirements.txt 
或者
conda install --yes --file requirements.txt
  1. 打包/解包(跨计算机)

    # 将环境打包
    tar cvf monodepth2-gpu.tar envirement# monodepth2-gpu.tar文件,通过http、ssh等方式拷贝到目标计算机
    rsync -rzP */envirement.tar /home/yoyo/anaconda3/envs# 解包
    tar xvf monodepth2-gpu.tar# 修改conda的环境配置文件 ~/.conda/envirement.txt,在尾部添加拷贝的环境目录
    /home/yoyo/miniconda3/envs/monodepth2-gpu
    
  2. 搜索包

    # 在anaconda官方仓库中搜索包(可能失效)
    anaconda search tensorflow-gpu -t conda  #搜包[tensorflow-gpu]# 在清华源镜像中搜索包
    conda search tensorflow-gpu# 模糊查询
    conda search *scikit*
    或者
    conda search '*scikit*'# 显示包详细信息(可能失效)
    anaconda show aaronszs/tensorflow-gpu  #查询第二条[aaronszs/tensorflow-gpu]
    
    # 启动Anaconda Navigator 图形化界面
    anaconda-navigator# 导入anaconda所有库
    conda install anaconda
    

五、FAQ

anaconda 环境新建/删除/拷贝 jupyter notebook上使用python虚拟环境 TensorFlow

Anaconda 换国内源、删源最全集锦

在anaconda中安装不存在的python包并安装到指定环境中

【转】conda install和创建虚拟环境下载慢 pip下载慢 有用

TensorFlow+Faster-RCNN+Ubuntu 环境配置&代码运行过程

Q:根据yaml文件复现环境错误

Collecting package metadata (repodata.json): done
Solving environment: failedResolvePackageNotFound: - wincertstore==0.2=py36h7fe50ca_0- jbig==2.1=h8d14728_2003- libdeflate==1.7=h8ffe710_5- zstd==1.5.0=h6255e5f_0- lz4-c==1.9.3=h8ffe710_1- lerc==2.2.1=h0e60522_0- libtiff==4.3.0=h0c97f57_1- jpeg==9d=h8ffe710_0- mkl==2021.3.0=hb70f87d_564- setuptools==52.0.0=py36haa95532_0- tbb==2021.3.0=h2d74725_0- certifi==2021.5.30=py36haa95532_0- vc==14.2=h21ff451_1- python==3.6.6=hea74fb7_0- zlib==1.2.11=h62dcd97_1010- numpy==1.19.5=py36h4b40d73_2- pip==21.2.2=py36haa95532_0- libpng==1.6.37=h1d00b33_2- opencv==3.3.1=py36h20b85fd_1- vs2015_runtime==14.27.29016=h5e58377_2- intel-openmp==2021.3.0=h57928b3_3372- xz==5.2.5=h62dcd97_1

Q:根据yaml文件复现环境错误

Collecting package metadata (repodata.json): done
Solving environment: failedResolvePackageNotFound: - wincertstore=0.2- vc=14.2- vs2015_runtime=14.27.29016
# 错误原因
找不到相关的包# 解决办法
注释对应的行

Q:NotWritableError: The current user does not have write permissions to a required path.

conda创建环境时报错:NotWritableError: The current user does not have write permissions to a required path.

tx2@tx2:~$ conda create -n efficientdet python=3.7
Solving environment: failedNotWritableError: The current user does not have write permissions to a required path.path: /home/tx2/archiconda3/pkgs/urls.txtuid: 1000gid: 1000If you feel that permissions on this path are set incorrectly, you can manually
change them by executing$ sudo chown 1000:1000 /home/tx2/archiconda3/pkgs/urls.txtIn general, it's not advisable to use 'sudo conda'.‵
# 错误原因
用户没有对anaconda3文件夹的读写权限,造成其原因可能是由于在安装anaconda时使用了管理员权限。# 解决办法
cd /home/tx2
sudo chown tx2:tx2 -R archiconda3

Q:subprocess.CalledProcessError: Command 'lsb_release -a' returned non-zero exit status 1.

subprocess.CalledProcessError: Command ‘(‘lsb_release’, ‘-a’)’ returned non-zero exit status 1.

(mslite) liulinjun@LAPTOP-4DTD5D42:~/MyDocuments/mindspore$ conda info --envs# >>>>>>>>>>>>>>>>>>>>>> ERROR REPORT <<<<<<<<<<<<<<<<<<<<<<Traceback (most recent call last):File "/home/liulinjun/miniconda3/lib/python3.9/site-packages/conda/exceptions.py", line 1079, in __call__return func(*args, **kwargs)File "/home/liulinjun/miniconda3/lib/python3.9/site-packages/conda/cli/main.py", line 84, in _mainexit_code = do_call(args, p)File "/home/liulinjun/miniconda3/lib/python3.9/site-packages/conda/cli/conda_argparse.py", line 83, in do_callreturn getattr(module, func_name)(args, parser)File "/home/liulinjun/miniconda3/lib/python3.9/site-packages/conda/cli/main_info.py", line 316, in executeinfo_dict = get_info_dict(args.system)File "/home/liulinjun/miniconda3/lib/python3.9/site-packages/conda/cli/main_info.py", line 135, in get_info_dict_supplement_index_with_system(virtual_pkg_index)File "/home/liulinjun/miniconda3/lib/python3.9/site-packages/conda/core/index.py", line 163, in _supplement_index_with_systemdist_name, dist_version = context.os_distribution_name_versionFile "/home/liulinjun/miniconda3/lib/python3.9/site-packages/conda/_vendor/auxlib/decorators.py", line 268, in new_fgetcache[inner_attname] = func(self)File "/home/liulinjun/miniconda3/lib/python3.9/site-packages/conda/base/context.py", line 786, in os_distribution_name_versionfrom .._vendor.distro import id, versionFile "/home/liulinjun/miniconda3/lib/python3.9/site-packages/conda/_vendor/distro.py", line 1084, in <module>_distro = LinuxDistribution()File "/home/liulinjun/miniconda3/lib/python3.9/site-packages/conda/_vendor/distro.py", line 599, in __init__self._lsb_release_info = self._get_lsb_release_info() \File "/home/liulinjun/miniconda3/lib/python3.9/site-packages/conda/_vendor/distro.py", line 943, in _get_lsb_release_inforaise subprocess.CalledProcessError(code, cmd, stdout, stderr)subprocess.CalledProcessError: Command 'lsb_release -a' returned non-zero exit status 1.`$ /home/liulinjun/miniconda3/bin/conda info --envs`An unexpected error has occurred. Conda has prepared the above report.If submitted, this report will be used by core maintainers to improve
future releases of conda.
Would you like conda to send this report to the core maintainers?[y/N]: NNo report sent. To permanently opt-out, use$ conda config --set report_errors false
File "/root/miniconda3/lib/python3.9/site-packages/conda/_vendor/distro.py", line 943, in _get_lsb_release_inforaise subprocess.CalledProcessError(code, cmd, stdout, stderr)subprocess.CalledProcessError: Command 'lsb_release -a' returned non-zero exit status 1.`$ /root/miniconda3/bin/conda info --envs`An unexpected error has occurred. Conda has prepared the above report.If submitted, this report will be used by core maintainers to improve
future releases of conda.
# 解决方法一
find / -name lsb_releasemv /usr/bin/lsb_release /usr/bin/lsb_release.bak
或者
rm -rf /usr/bin/lsb_release# 解决方法二
如果方法一无法解决,可尝试方法二。
conda config --set report_errors false

相关文章:

Anaconda在Ubuntu下的安装与简单使用

一、参考资料 ubuntu16.04下安装&配置anacondatensorflow新手教程 二、安装Anaconda 下载 Miniconda镜像1 or Miniconda镜像2 # 下载 wget Miniconda3-py39_4.10.3-Linux-x86_64.sh# 安装 bash Miniconda3-py39_4.10.3-Linux-x86_64.sh一路yes 安装过程中的选项 Do you …...

网络编程【InetAddress , TCP 、UDP 、HTTP 案例】

day38上 网络编程 InetAddress 理解&#xff1a;表示主机类 一个域名 对应 多个IP地址 public static void main(String[] args) throws UnknownHostException {//获取本机的IP地址 // InetAddress localHost InetAddress.getLocalHost(); // System.out.println(localHos…...

软考中级工程师网络技术第二节网络体系结构

OSPF将路由器连接的物理网络划分为以下4种类型&#xff0c;以太网属于&#xff08;25&#xff09;&#xff0c;X.25分组交换网属于&#xff08;非广播多址网络NBMA&#xff09;。 A 点对点网络 B 广播多址网络 C 点到多点网络 D 非广播多址网络 试题答案 正确答案&#xff1a; …...

Mac 软件清单

~自留备用~ Macbook用了几年之后, 512G的内置硬盘有些紧张了, 这几天总是提示空间不足, 就重装了下系统, 重装之后竟然不记得有些软件的名字和下载链接, 特此记录 Office 办公套件 直接从微软官网下载Office 安装包https://officecdnmac.microsoft.com/pr/C1297A47-86C4-4C1F…...

【Leetcode每日一题】 分治 - 颜色分类(难度⭐⭐)(57)

1. 题目解析 题目链接&#xff1a;75. 颜色分类 这个问题的理解其实相当简单&#xff0c;只需看一下示例&#xff0c;基本就能明白其含义了。 2.算法原理 算法思路解析 本算法采用三指针法&#xff0c;将数组划分为三个区域&#xff0c;分别用于存放值为0、1和2的元素。通过…...

微信登录功能-保姆级教学

目录 一、使用组件 二、登录功能 2.1 步骤 2.2 首先找到网页权限 复制demo 代码 这里我们需要修改两个参数 三、前端代码 3.1 api 里weiXinApi.ts 3.2 api里的 index.ts 3.3 pinia.ts 3.4 My.vue 四、后端代码 4.1 WeiXinController 4.2 Access_Token.Java 4.3 We…...

嵌入式MCU BootLoader开发配置详细笔记教程

目录 一、BootLoader基础 二、BootLoader原理及配置 三、BootLoader程序 bootloader.h bootloader.c 四、Application1 用户程序 application1.h application1.c 五、Application2 用户程序 application2.h 六、程序运行效果 七、工程文件Demo 一、BootLoader基础 …...

Unity 中消息提醒框

Tooltip 用于ui布局 using System.Collections; using System.Collections.Generic; using UnityEngine; using TMPro; using UnityEngine.UI;[ExecuteInEditMode()] // 可以在编辑模式下运行public class Tooltip : MonoBehaviour {public TMP_Text header; // 头部文本publi…...

好数(蓝桥杯)

文章目录 好数题目描述暴力方法一暴力方法二&#xff08;超时&#xff09; 好数 题目描述 【问题描述】 一个整数如果按从低位到高位的顺序&#xff0c;奇数位&#xff08;个位、百位、万位 &#xff09;上的数字是奇数&#xff0c;偶数位&#xff08;十位、千位、十万位 …...

自动化收集Unity版本更新日志

自动化收集Unity版本更新日志 &#x1f365;功能介绍&#x1f96a;食用手册填写配置开始搜集 &#x1f368;数据展示 &#x1f365;功能介绍 &#x1f4a1;获取指定年份中所有的Unity版本更新日志。 &#x1f4a1;根据指定字符串过滤。 &#x1f4a1;.收集后自动保存成markdow…...

【CSS】CSS水平居中方案

CSS水平居中方案 1. 行内元素水平居中 设置父元素的text-align:center .box {width: 300px;height: 300px;margin: 100px auto;text-align: center;background-color: pink; }2. 块级元素水平居中 当块级元素设置了明确的宽度数值时&#xff0c;可以使用margin: 0 auto 3.…...

SQL注入sqli_labs靶场第二题

解题思路与第一题相同 ?id1 and 11 和?id1 and 12进行测试如果11页面显示正常和原页面一样&#xff0c;并且12页面报错或者页面部分数据显示不正常&#xff0c;那么可以确定此处为数字型注入。 联合查询&#xff1a; 猜解列名数量&#xff1a;3 ?id1 order by 4 判断回显…...

基于机器学习的人脸发型推荐算法研究与应用实现

1.摘要 本文主要研究内容是开发一种发型推荐系统&#xff0c;旨在识别用户的面部形状&#xff0c;并根据此形状推荐最适合的发型。首先&#xff0c;收集具有各种面部形状的用户照片&#xff0c;并标记它们的脸型&#xff0c;如长形、圆形、椭圆形、心形或方形。接着构建一个面部…...

【服务器部署篇】Linux下Nginx的安装和配置

作者介绍&#xff1a;本人笔名姑苏老陈&#xff0c;从事JAVA开发工作十多年了&#xff0c;带过刚毕业的实习生&#xff0c;也带过技术团队。最近有个朋友的表弟&#xff0c;马上要大学毕业了&#xff0c;想从事JAVA开发工作&#xff0c;但不知道从何处入手。于是&#xff0c;产…...

React搭建一个文章后台管理系统

1、项目准备 本篇文章讲解的是一个简单的文章后台管理系统&#xff0c;系统的功能很简单&#xff0c;如下&#xff1a;登录、退出&#xff1b;首页&#xff1b;内容(文章)管理&#xff1a;文章列表、发布文章、修改文章。 1&#xff09;React官方脚手架&#xff1a;create-rea…...

Elasticsearch 支持的插件 —— 筑梦之路

Analysis 插件&#xff1a; 1、IK Analyzer&#xff1a;适用于中文分词的插件&#xff0c;提供了针对中文文本的分析器。 2、Smart Chinese Analysis&#xff1a;另一个中文分词插件&#xff0c;支持中文智能分词。 集群管理插件&#xff1a; 1、Kibana&#xff1a;Elasticsear…...

HTML:链接

目录 一、超链接 二、 外联元素 一、<a>超链接 <a> 标签用于定义超链接&#xff0c;超链接可以让用户从一个网页跳转到另一个网页。 常用属性&#xff1a; href指定链接的目标地址。download表示链接是一个下载链接&#xff0c;指定下载的文件名。target 指定在…...

vscode远程连接centos

文章目录 vacode连接linux1. 安装插件2. 查看配置3. 打开ssh4. 远程连接 vacode连接linux 1. 安装插件 在扩展栏搜索remote &#xff0c;找到Remote Development插件&#xff0c;进行安装&#xff1a; 2. 查看配置 打开自己的linux终端&#xff0c;输入ifconfig&#xff0c;…...

scala---面向对象(类,对象,继承,抽象类,特质)

一、类&#xff08;class&#xff09;和 对象&#xff08;object&#xff09; 1、类 类就是对客观的一类事物的抽象。用一个class关键字来描述和Java一样&#xff0c;在这个类中可以拥有这一类事物的属性&#xff0c;行为等等。 2、为什么要有对象 在java中的一个class既可…...

【机器学习300问】68、随机初始化神经网络权重的好处?

一、固定的初始化神经网络权重可能带来的问题 在训练神经网络的时候&#xff0c;初始化权重如果全部设置为0或某个过大值/过小值。会导致一些问题&#xff1a; 对称权重问题&#xff1a;全为0的初始化权重会导致神经网络在前向传播时接收到的信号输入相同。每个神经网络节点中…...

智能缓存优化LibraVDB视频数据库内存管理实战

1. 项目概述与核心价值 最近在折腾一个需要处理大量视频流和图像识别的项目&#xff0c;遇到了一个老生常谈但又极其棘手的问题&#xff1a;内存。尤其是在使用像LibraVDB这样的开源视频数据库进行帧级数据存取时&#xff0c;传统的缓存策略要么命中率低&#xff0c;要么内存占…...

利用大语言模型实现数据自动标注:Autolabel 实战指南

1. 项目概述&#xff1a;用大模型自动标注数据&#xff0c;告别人工标注的苦差事 如果你做过机器学习项目&#xff0c;尤其是监督学习&#xff0c;那你一定对数据标注这个环节又爱又恨。爱的是&#xff0c;有了高质量标注数据&#xff0c;模型性能才有保障&#xff1b;恨的是&a…...

OpenClaw 2.6.4 一键部署教程|零代码零基础无需命令快速上手

OpenClaw 是一款可以在本地运行的智能操作工具&#xff0c;能够通过自然语言指令完成电脑自动化操作&#xff0c;无需复杂配置即可快速使用。本文为 Windows 10/11 64 位系统提供完整的一键部署流程&#xff0c;帮助用户快速搭建属于自己的本地智能工具。 适配系统&#xff1a…...

【网络安全】什么是漏洞扫描?有哪些功能?

【网络安全】什么是漏洞扫描&#xff1f;有哪些功能&#xff1f; 一、什么是漏洞扫描&#xff1f; 漏洞扫描是指基于CVE、CNVD、CNNVD 等漏洞数据库&#xff0c;通过专用工具扫描手段对指定的远程或者本地的网络设备、主机、数据库、操作系统、中间件、业务系统等进行脆弱性评估…...

如何快速掌握雀魂Mod Plus:解锁全角色皮肤的新手完全指南

如何快速掌握雀魂Mod Plus&#xff1a;解锁全角色皮肤的新手完全指南 【免费下载链接】majsoul_mod_plus 雀魂解锁全角色、皮肤、装扮等&#xff0c;支持全部服务器。 项目地址: https://gitcode.com/gh_mirrors/ma/majsoul_mod_plus 还在为无法获得心仪角色和皮肤而烦恼…...

详解 Deepsec:Vercel 开源 AI 代码安全防护工具的技术架构与实现原理

摘要在 AI 大模型深度融入软件开发全链路的今天&#xff0c;代码安全防护正面临 “复杂逻辑漏洞难发现、传统工具误报率高、源码隐私保护难” 三重核心挑战。Vercel 开源的 Deepsec 作为一款Agent 驱动的本地化 AI 安全防护工具&#xff0c;跳出传统 SAST&#xff08;静态应用安…...

CANN/asc-devkit bfloat16转half API

__bfloat162half_ru 【免费下载链接】asc-devkit 本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言&#xff0c;原生支持C和C标准规范&#xff0c;主要由类库和语言扩展层构成&#xff0c;提供多层级API&#xff0c;满足多维场景算子开发诉求。 项目地址: https://git…...

FPGA与ASIC核心技术对比与选型指南

1. FPGA与ASIC的本质差异解析在数字电路设计领域&#xff0c;FPGA&#xff08;现场可编程门阵列&#xff09;和ASIC&#xff08;专用集成电路&#xff09;代表着两种截然不同的技术路线。FPGA本质上是一种"硬件可重构"的半导体器件&#xff0c;其核心结构由可编程逻辑…...

XUnity.AutoTranslator:打破语言障碍的Unity游戏实时翻译插件终极指南

XUnity.AutoTranslator&#xff1a;打破语言障碍的Unity游戏实时翻译插件终极指南 【免费下载链接】XUnity.AutoTranslator 项目地址: https://gitcode.com/gh_mirrors/xu/XUnity.AutoTranslator 你是否曾经因为语言不通而错过心爱的外语游戏&#xff1f;是否对复杂的游…...

PUBG玩家必看:如何用罗技鼠标宏实现精准无后座力射击

PUBG玩家必看&#xff1a;如何用罗技鼠标宏实现精准无后座力射击 【免费下载链接】logitech-pubg PUBG no recoil script for Logitech gaming mouse / 绝地求生 罗技 鼠标宏 项目地址: https://gitcode.com/gh_mirrors/lo/logitech-pubg 你是否在《绝地求生》中总感觉压…...