首页
关于
留言
友情链接
推荐
粽子SHOP
Search
1
粽子SHOP即时到账 微信插件(MyWechat)
5,158 阅读
2
PS人像美颜插件 DR5.0增强版 一键人像磨皮/美白/高低频
4,408 阅读
3
Windows Navicat Premium16.3.2 免安装 绿色汉化版
3,362 阅读
4
彩虹聚合登录API源码/上元二开 QQ互联分发
3,156 阅读
5
LayuiTable导出所有数据,无需修改后端代码
2,591 阅读
程序源码
PHP源码
HTML源码
精品程序
易语言源码
活动资讯
技术分享
实用代码
实用工具
学习笔记
PHP笔记
前端笔记
uniapp
Python
逆向
docker
thinkPHP
登录
Search
标签搜索
python
docker
typescript
swoole
thinkphp6
php
composer
composer命令
tp6
tp中间件
vue
node.js
粽子shop
thinkSwoole
R语言
timi
王者荣耀
王者荣耀ios扫码
layer
layer图片预览
烂掉的ay
累计撰写
96
篇文章
累计收到
1,105
条评论
首页
栏目
程序源码
PHP源码
HTML源码
精品程序
易语言源码
活动资讯
技术分享
实用代码
实用工具
学习笔记
PHP笔记
前端笔记
uniapp
Python
逆向
docker
thinkPHP
页面
关于
留言
友情链接
推荐
粽子SHOP
搜索到
96
篇与
EN
的结果
2025-02-02
docker-R语言多版本安装,在python中使用R容器执行脚本
.env# 新增R版本 4.2.1 R_NAME_421=r_4_2_1 # 容器/镜像 名称 R_VERSION_421=4.2.1 # 版本号 R_PORT_421=8780 # 新增R版本 4.3.0 R_NAME_430=r_4_3_0 R_VERSION_430=4.3.0 R_PORT_430=8781 # 新增R版本 4.4.2 R_NAME_442=r_4_4_2 R_VERSION_442=4.4.2 R_PORT_442=8782docker-compose.yml # R 服务 4.2.1 r_4_2_1: build: context: . dockerfile: ${R_DOCKERFILE} # dockerfile公共文件 args: FROM_IMAGE: rocker/r-ver:${R_VERSION_421} # 指定镜像版本 R_BIOC_MIRROR: ${R_BIOC_MIRROR} # 公共 镜像源 R_CRAN: ${R_CRAN} container_name: ${R_NAME_421} # 指定版本名称 image: ${R_NAME_421}-image # 指定镜像名称 ports: - "${R_PORT_421}:${R_PORT_421}" # 指定端口 volumes: - ./R:/workspace/R - ./static/matrix:/workspace/static/matrix - .env:/workspace/.env # 挂载 .env 文件 #- ./store/docker/r-library/${R_NAME_442}:/usr/local/lib/R/site-library # 持久化 R 包的安装位置 environment: - R_HOME=/usr/local/lib/R command: Rscript R/http/start.R # 启动API服务 restart: unless-stopped networks: - backend # R 服务 4.3.0 r_4_3_0: build: context: . dockerfile: ${R_DOCKERFILE} # dockerfile公共文件 args: FROM_IMAGE: rocker/r-ver:${R_VERSION_430} # 指定镜像版本 R_BIOC_MIRROR: ${R_BIOC_MIRROR} # 公共 镜像源 R_CRAN: ${R_CRAN} container_name: ${R_NAME_430} # 指定版本名称 image: ${R_NAME_430}-image # 指定镜像名称 ports: - "${R_PORT_430}:${R_PORT_430}" # 指定端口 volumes: - ./R:/workspace/R - ./static/matrix:/workspace/static/matrix - .env:/workspace/.env # 挂载 .env 文件 #- ./store/docker/r-library/${R_NAME_430}:/usr/local/lib/R/site-library # 持久化 R 包的安装位置 environment: - R_HOME=/usr/local/lib/R command: Rscript R/http/start.R # 启动API服务 restart: unless-stopped networks: - backend # R 服务 4.4.2 r_4_4_2: build: context: . dockerfile: ${R_DOCKERFILE} # dockerfile公共文件 args: FROM_IMAGE: rocker/r-ver:${R_VERSION_442} # 指定镜像版本 R_BIOC_MIRROR: ${R_BIOC_MIRROR} # 公共 镜像源 R_CRAN: ${R_CRAN} container_name: ${R_NAME_442} # 指定版本名称 image: ${R_NAME_442}-image # 指定镜像名称 ports: - "${R_PORT_442}:${R_PORT_442}" # 指定端口 volumes: - ./R:/workspace/R - ./static/matrix:/workspace/static/matrix - .env:/workspace/.env # 挂载 .env 文件 #- ./store/docker/r-library/${R_VERSION_442}:/usr/local/lib/R/site-library # 持久化 R 包的安装位置 environment: - R_HOME=/usr/local/lib/R command: Rscript R/http/start.R # 启动API服务 restart: unless-stopped networks: - backend dockerfileARG FROM_IMAGE=rocker/r-ver:4.4.1 FROM ${FROM_IMAGE} ARG R_BIOC_MIRROR=https://mirrors.tuna.tsinghua.edu.cn/bioconductor ARG R_CRAN=https://mirrors.tuna.tsinghua.edu.cn/CRAN/ # 设置镜像源为清华大学的 CRAN 镜像和 Bioconductor 镜像 RUN echo "options(BioC_mirror = '${R_BIOC_MIRROR}')" >> /usr/local/lib/R/etc/Rprofile.site RUN echo "options(repos = c(CRAN = '${R_CRAN}'))" >> /usr/local/lib/R/etc/Rprofile.site ## 安装系统依赖包 RUN sed -i 's|http://archive.ubuntu.com/ubuntu/|https://mirrors.tuna.tsinghua.edu.cn/ubuntu/|' /etc/apt/sources.list && \ apt-get update && \ apt-get install -y \ libcurl4-openssl-dev \ libssl-dev \ libxml2-dev \ libfontconfig1-dev \ libharfbuzz-dev \ libfribidi-dev \ libpango1.0-dev \ libx11-dev \ libxt-dev \ libjpeg-dev \ libpng-dev \ libtiff-dev \ libbz2-dev \ libsodium-dev \ && rm -rf /var/lib/apt/lists/* \ # 安装中文字体 RUN apt-get update && apt-get install -y fonts-wqy-zenhei fonts-wqy-microhei ttf-mscorefonts-installer fontconfig # 查看系统中的中文字体:fc-list :lang=zh # 报错:dpkg 进程被中断了; 修复:dpkg --configure -a ## 设定工作目录 WORKDIR /workspace ## 常用包安装脚本 COPY R/docker/install_packages.R /workspace/install_packages.R # 验证文件是否被成功复制 RUN ls -l /workspace/install_packages.R ## 执行(耗时) RUN Rscript /workspace/install_packages.R ## 设定工作目录 WORKDIR /workspace # ## 保持容器在后台运行 CMD ["tail", "-f", "/dev/null"] install_packages.R # 安装常用的包 install.packages('pheatmap') install.packages('BiocManager') options(timeout = 600) install_missing_packages <- function(packages) { if (!requireNamespace("BiocManager", quietly = TRUE)) { install.packages("BiocManager") } for (package in packages) { if (!requireNamespace(package, quietly = TRUE)) { cat(paste("开始安装", package, "...\n")) BiocManager::install(package, ask = FALSE) } else { cat(paste( packageVersion(package), package, "已安装.\n" )) } } } # 安装常用的包 packages <- c('GEOquery', 'ggplot2', 'readxl', 'readr', 'openxlsx', 'dplyr', 'clusterProfiler', 'limma', 'DESeq2', 'ggtree', 'org.Hs.eg.db','org.Mm.eg.db','org.Rn.eg.db','GOplot','stringr', 'enrichplot', 'treeio', 'WGCNA', 'igraph','plumber','jsonlite','dotenv','remotes') # 安装缺失的 R 包 install_missing_packages(packages) # 针对某个版本中的某些包进行检测安装 r_version <- getRversion() cat(paste("检测R版本", r_version , "...\n")) if(r_version == "4.2.1"){ if (!requireNamespace("ggtree", quietly = TRUE)) { remotes::install_github("YuLab-SMU/ggtree") } if (!requireNamespace("clusterProfiler", quietly = TRUE)) { remotes::install_github("ctlab/fgsea") BiocManager::install("clusterProfiler") } } if(r_version == "4.3.0"){ if (!requireNamespace("ggtree", quietly = TRUE) && !requireNamespace("limma", quietly = TRUE) && !requireNamespace("org.Hs.eg.db", quietly = TRUE) ) { options(BioC_mirror = "https://bioconductor.org") install_missing_packages(packages) } if (!requireNamespace("ggtree", quietly = TRUE)) { remotes::install_github("YuLab-SMU/ggtree") } if (!requireNamespace("clusterProfiler", quietly = TRUE)) { remotes::install_github("ctlab/fgsea") BiocManager::install("clusterProfiler") } } 如何在Python中使用R容器,执行R脚本?搭建好后可以通过接口的方式运行R脚本也可以使用py-docker操作容器(线上可能需要挂载docker守护进程)接口服务http.R if (!requireNamespace("plumber", quietly = TRUE)) { cat(paste("开始安装", "plumber", "...\n")) BiocManager::install("plumber", ask = FALSE) } if (!requireNamespace("jsonlite", quietly = TRUE)) { cat(paste("开始安装", "jsonlite", "...\n")) BiocManager::install("jsonlite", ask = FALSE) } if (!requireNamespace("dotenv", quietly = TRUE)) { cat(paste("开始安装", "dotenv", "...\n")) BiocManager::install("dotenv", ask = FALSE) } cat("当前工作目录",getwd(),"\n") # 加载 dotenv 包 library(dotenv) library(plumber) # 读取 .env 文件 load_dot_env(".env") #print(Sys.getenv()) # 获取 R 版本号 r_version <- getRversion() cat("R版本:", as.character(r_version), "\n") # 将 R 版本号转换为 .env 文件中的键名格式 例如:4.2.1 -> 421 r_version_key <- gsub("\\.", "", as.character(r_version)) # 构建端口号的键名 port_key <- paste0("R_PORT_", r_version_key) # 从 .env 文件中获取端口号 port <- as.integer(Sys.getenv(port_key)) if (is.na(port)) { # 如果端口号不存在,使用默认端口 port <- 8006 # 默认端口 warning("未找到当前R版本的端口配置(",port_key,") 使用默认端口:", port) }else{ cat("找到当前 R 版本的端口配置:", port, "\n") } # 创建 plumber API pr <- plumb("R/http/app.R") # 启动 plumber 服务 pr$run(host = "0.0.0.0", port = port) app.Rlibrary(jsonlite) # 定义一个 API 端点,执行 R 脚本 #* 执行 R 脚本 #* @post /run_r_script function(req, script = "", param = "") { # 调用执行脚本的函数 result <- run_script(script, param) return(result) } #* 执行系统命令 post #* @post /run_command function(req, command = "") { if (command == "") { return(list(code = unbox(0),msg = unbox("未提供命令") )) } # 执行系统命令 result <- tryCatch({ output <- system(command, intern = TRUE) list(code = unbox(1), msg = unbox("命令执行成功"), data = output) }, error = function(e) { list(code = unbox(0), msg = unbox(e$message) ) }) return(result) } # 执行 R 脚本的函数 run_script <- function(script_path, params) { setwd("/workspace") # 检查脚本文件是否存在 if (!file.exists(script_path)) { return( list( code = unbox(0), msg = unbox("脚本文件不存在"), data = getwd() )) } # 将参数转换为 R 对象 #params <- jsonlite::fromJSON(params) # 构造命令行 command <- paste("Rscript", script_path, shQuote(params)) # 在独立环境中执行脚本 result <- tryCatch({ #run_result <- source(script_path) # 执行结果 run_result <- system(command, intern = TRUE) print(run_result) # 获取退出状态 exit_status <- attr(run_result, "status") exit_status <- ifelse(is.null(exit_status), 0, exit_status) print(cat("退出状态:",exit_status,"\n")) if(exit_status == 1){ # 将 run_result 转换为字符串 result_string <- paste(run_result, collapse = "\n") #print(result_string) list( code = unbox(0), # 使用 unbox() 将 code 转换为标量值 msg = unbox(result_string), data = run_result, # 捕获的输出 output = params ) }else{ #run_result <- capture.output(source(script_path)) list( code = unbox(1), # 使用 unbox() 将 code 转换为标量值 msg = unbox("脚本执行成功"), data = run_result, # 捕获的输出 output = params ) } }, error = function(e) { print(e) list( code = unbox(0), msg = unbox("脚本执行失败"), data = NULL, output = unbox(e$message) ) }) return(result) }
2025年02月02日
32 阅读
0 评论
0 点赞
2025-02-01
Docker容器加入已有网络
version: '3.8' services: # FastAPI 服务 fastapi: build: context: . dockerfile: Dockerfile container_name: ${FASTAPI_CONTAINER_NAME} image: ${FASTAPI_IMAGE} # 启动web服务和队列 command: /bin/bash -c "uvicorn main:app --host 0.0.0.0 --port 8000 --workers 4 & arq main_queue.WorkerSettings" ports: - "${FASTAPI_PORT}:8000" # depends_on: # - redis volumes: - .:/app networks: - backend # 加入一个外部网络,比如 dnmp_default 下有redis、mysql,可以直接通过 容器名称:内部端口 访问。 - dnmp_default networks: backend: driver: bridge dnmp_default: # 声明外部网络 external: true
2025年02月01日
27 阅读
0 评论
0 点赞
2024-12-13
docker中安装Python和R语言,并指定版本和R包
最近开发的一个项目,用到了R语言脚本。因为开发环境版本是4.4.2,所以生产环境也要装4.4.2。本来是这样写的,R语言版本指定不了。不管怎么写版本号 r-base=xxx 都安装不上,说不存在。# 安装R语言环境(默认是安装的4.2,但是我要装4.4) RUN apt-get update && apt-get install -y \ --fix-missing \ r-base \ r-cran-devtools \ build-essential \ libcurl4-openssl-dev \ libssl-dev \ libxml2-dev && \ rm -rf /var/lib/apt/lists/*搞不懂,换个思路,直接下载4.2.2版本安装# 使用 python 3.12 作为基础镜像 FROM python:3.12 # 设置工作目录 WORKDIR /app # 安装系统依赖和编译工具 RUN apt-get update && apt-get install -y --no-install-recommends \ build-essential \ wget \ libcurl4-openssl-dev \ libssl-dev \ libxml2-dev \ ca-certificates \ gfortran \ && rm -rf /var/lib/apt/lists/* # 下载并安装 R 4.4.2 源代码 RUN wget https://cran.r-project.org/src/base/R-4/R-4.4.2.tar.gz && \ tar -xvzf R-4.4.2.tar.gz && \ cd R-4.4.2 && \ ./configure && \ make && \ make install && \ cd .. && rm -rf R-4.4.2 R-4.4.2.tar.gz \ R --version # 设置 CRAN 镜像源为清华镜像并安装 R 包 RUN echo "options(repos = c(CRAN = 'https://mirrors.tuna.tsinghua.edu.cn/CRAN/'))" > /usr/local/lib/R/etc/Rprofile.site && \ Rscript -e "install.packages('pheatmap')" && \ Rscript -e "install.packages('BiocManager')" && \ echo "options(BioC_mirror = 'https://mirrors.tuna.tsinghua.edu.cn/bioconductor')" >> /usr/local/lib/R/etc/Rprofile.site && \ Rscript -e "BiocManager::install(version = '3.20')" && \ Rscript -e "BiocManager::install(c('GEOquery', 'ggplot2', 'readxl', 'readr', 'openxlsx', 'dplyr', 'clusterProfiler', 'limma', 'DESeq2'), ask = FALSE)" # 进入容器 # 查看R的安装目录:which R # 查看R版本:R --version 或 Rscript -e "R.version$version.string" # 查看R镜像:Rscript -e "print(getOption('repos'))" # 查看BiocManager版本: Rscript -e "packageVersion("BiocManager")" (BiocManager包的版本号。根据你当前的环境,它可能是通过 CRAN 安装的版本,通常在 1.x 系列) # 查看Bioconductor版本: Rscript -e "BiocManager::version()" (Bioconductor的版本。BiocManager 会根据你所安装的 Bioconductor 版本返回一个版本号。Bioconductor 的版本通常是以 3.x 开头的,例如 3.20。Bioconductor 版本是根据 R 版本来决定的,与 CRAN 上的 BiocManager 版本号是分开的。) # 查看BiocManager镜像: Rscript -e "options('BioC_mirror')" # 将当前目录的内容复制到容器中 COPY . /app # 安装 Python 项目所需的依赖 RUN pip install --no-cache-dir -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
2024年12月13日
152 阅读
0 评论
0 点赞
2024-11-16
Clash代理 科学上网工具 Clash中文版 Windows/Mac
Clash.for.Windows.Setup.0.20.39_Opt-1_中文版ClashX-Pro.dmgClashX.dmgWindowsMacWindows 版本下载隐藏内容,请前往内页查看详情Mac 版本下载隐藏内容,请前往内页查看详情
2024年11月16日
613 阅读
56 评论
0 点赞
2024-09-30
WxPython可视化编辑器1.3 免安装桌面开发工具
介绍WxPython可视化编辑器是一款可视化的Python桌面应用开发工具,界面风格类似易语言。拖拽控件就可以实现页面布局,还能实时查看源代码。展示源代码:写过易语言的是不是很熟悉。这个工具不需要安装,解压即用,用来辅助开发还是很香的。下载地址(附带1.2版本和1.3版本)隐藏内容,请前往内页查看详情
2024年09月30日
114 阅读
3 评论
0 点赞
2024-09-25
分享两个微信消息推送的平台,无需注册公众号
想做微信消息推送的功能,但是没有公众号怎么办?试试这几个平台,一句代码接入微信消息推送,无需注册公众号。息知一个极简的微信消息通知接口,只需一行代码就能立即将消息推送到你的微信,是运维、消息通知的好帮手官网:隐藏内容,请前往内页查看详情虾推啥免费 实时 跨平台 保护隐私官网:隐藏内容,请前往内页查看详情使用方式也很简单,微信扫码自动注册。然后会给你一个token,携带token请求接口,就可以实现了。看看效果点进去还可以看到详情。为什么发送成功了,但是微信没有通知提醒?这是因为微信默认开了免打扰,点击该公众号右上角 - 设置 - 关闭免打扰 即可。
2024年09月25日
332 阅读
2 评论
0 点赞
2024-05-21
电脑同时外放两个蓝牙音响,实现全屋立体声效果(Virtual Audio Cable)
先把两个音响通过蓝牙连接上电脑(这时候发现,如果选择一个音频输出,无法两个同时播放)2.下载虚拟声卡 Virtual Audio Cable。隐藏内容,请前往内页查看详情3.安装。安装成功后,在音频输出会显示一个line1。选择它4.找到安装目录下,双击打开 audiorepeater.exe 两次 (双开)wave in 都选择 line1wave out 分别选择两个蓝牙音响点击 start 就可以听效果了。最好是选择蓝牙延迟较低的、或者同款的蓝牙音箱。原理大概是使用虚拟声卡做个音源分发。
2024年05月21日
1,412 阅读
35 评论
1 点赞
2024-05-18
分享几个免费查询ip地址、归属地信息的接口
有些是需要指定IP,查询归属地等信息;有些是直接访问获取当前客户端的IP信息。看需求使用。另外不指定有没有请求频率限制;当然,想要稳定最好还是去用付费的接口太平洋APIhttp://whois.pconline.com.cn/ipJson.jsp?ip=123.123.123.123&json=truewww.ip.cnhttps://www.ip.cn/api/index?ip&type=0CSDNhttps://searchplugin.csdn.net/api/v1/ip/get?ip=123.123.123.123ip-api.comhttp://ip-api.com/json/ 查询指定IPhttp://ip-api.com/json/123.123.123.123?lang=zh-CNwww.ipplus360.comhttps://www.ipplus360.com/getIPapi.ipify.orghttps://api.ipify.org/?format=json搜狐API: http://pv.sohu.com/cityjson?ie=utf-8 // http://pv.sohu.com/cityjson?ie=utf-8 <script src="http://pv.sohu.com/cityjson?ie=utf-8"></script> <script type="text/javascript"> console.log(returnCitySN) //返回对象Object {cip: "122.70.200.146", cid: "110000", cname: "北京市"} </script>
2024年05月18日
374 阅读
0 评论
0 点赞
2024-03-28
微博CK免扫码快捷登录 分析
现在各大平台都支持第三方账号快捷登录;本次是分析如何使用微博CK登录各个平台账号。在登录之前,肯定是需要登录平台绑定微博账号的。有什么用?emmm,假如,你有一个迅雷会员,要借¥给别人用。但是你不想或者不能提供手机号码给别人登录,又不想提供账号登录密码....展示目前测试迅雷、百度都可以用{dotted startColor="#ff6c6c" endColor="#1989fa"/}分析隐藏内容,请前往内页查看详情思路打开,如果做成卡密形式的思路:生成一个卡密,绑定这个ck,可以给卡密设置过期时间。前端扫码完,将二维码地址和卡密一起传给后端。后端先校验卡密,通过后,再用卡密对应的ck进行登录~~~如果你有很多ck。。。。。本文章用于记录学习过程、交流。本文章用于记录学习过程、交流。本文章用于记录学习过程、交流。
2024年03月28日
570 阅读
8 评论
0 点赞
2024-03-23
两句命令查看电脑上已连接的wifi以及密码 附python代码
打开终端,输入两条命令,即可查看当前电脑上所有已保存的wifi以及密码可以列出已保存的wifi网络名netsh wlan show profile打印出WiFi信息(包含密码)netsh wlan show profile name=Wifi网络名字 key=clear使用python代码获取 import subprocess cmd1 = "netsh wlan show profile" cmd2 = "netsh wlan show profile name={wifi} key=clear" def get_wifi(): # 执行 查看wifi列表 命令 reslut = subprocess.run(cmd1.split() , capture_output= True,text=True) if reslut.returncode == 0: output_lines = reslut.stdout.split("\n") # 获取到所有wifi的名称 wifi_profiles = [ line.split(":")[1].strip() for line in output_lines if "所有用户配置文件" in line] for wifi_profile in wifi_profiles: # 查询每个wifi的密码 cmd = cmd2.replace("{wifi}", wifi_profile) wifikey = subprocess.run(cmd.split() , capture_output= True,text=True) if wifikey.returncode == 0: pwds = [line.split(":")[1].strip() for line in wifikey.stdout.split("\n") if "关键内容" in line] for pwd in pwds: print(f'WIFI: {wifi_profile},密码{pwd}') else: print(f'WIFI: {wifi_profile} 获取失败') else: print("获取WIFI配置失败") if __name__ == '__main__': get_wifi()
2024年03月23日
292 阅读
0 评论
0 点赞
1
2
...
10