linux系统安装anaconda,并通过java程序调用python程序

news2024/9/22 18:20:06

虚拟环境准备

  1. 首先准备一块空的分区,安装anaconda至少要20g以上才能执行简单程序,这里准备20G的磁盘空间
    在这里插入图片描述
  2. 创建分区,执行以下步骤,之后执行reboot重启
fdisk /dev/sda
p
n
回车
回车
w
  1. 查看当前系统创建的分区,我这里是名为sda3的分区,后面操作根据实际分区操作

在这里插入图片描述

  1. 初始化分区 sda3换成你实际的分区名
mkfs.ext4 /dev/sda3
  1. 创建一个新的目录
mkdir /python

5.将新分区挂载到 /python目录上

mount /dev/sda3 /python

anaconda环境准备

#下载linux版本的anaconda,我这里安装anaconda3.7
wget https://repo.anaconda.com/archive/Anaconda3-2023.07-2-Linux-x86_64.sh
#下载完成后,给安装包执行权限
chmod +x Anaconda3-2023.07-2-Linux-x86_64.sh
#执行下面命令安装包安装,一直按回车,直到出现yes/no的选择,输入yes回车,当出现选择安装目录的时候,输入/python/anaconda3
./Anaconda3-2023.07-2-Linux-x86_64.sh
#给anaconda配置环境
vim /etc/profile
#在文件最后,按下a键,然后输入export PATH=/python/anaconda3/bin:$PATH,然后按esc在输入:wq保存退出
#执行source /etc/profile使配置文件生效
#进入python
cd /python
#创建一个虚拟环境
conda create -n pytorch python=3.9
#激活虚拟环境,并初始化
conda activate pytorch
conda init
source /root/.bashrc

创建项目

#创建项目目录
mkdir myproject1
#安装自己需要的库,我这里安装以下几个库
pip install torch
pip install pyinstaller
#java环境这里就不配置了,比较简单,请自行配置好,我这里使java1.8版本

在当前目录添加一张图片名字为1.jpg,任意一张图片即可,以下截图中圈出来的是本文章所需的
在这里插入图片描述
PythonCaller.java程序如下

import java.io.*;
import java.nio.file.Files;
import java.nio.file.Paths;

public class PythonCaller{
    public static void main(String[] args) {
        Process process = null;
        try {
            // 读取图片文件到字节数组
            byte[] imageBytes = Files.readAllBytes(Paths.get("1.jpg"));

            // 启动 Python 脚本进程
            ProcessBuilder builder = new ProcessBuilder("python", "test.py");
            process = builder.start();

            // 获取进程的输入流,并写入图片字节
            try (OutputStream stdin = process.getOutputStream()) {
                stdin.write(imageBytes);
                stdin.flush();
            }

            // 读取 Python 脚本的输出
            try (BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()))) {
                String line;
                while ((line = reader.readLine()) != null) {
                    System.out.println("Output from Python: " + line);
                }
            }

            // 等待进程结束
            int exitCode = process.waitFor();
            System.out.println("Exited with code: " + exitCode);
        } catch (IOException e) {
            e.printStackTrace();
        } catch (InterruptedException e) {
            e.printStackTrace();
            Thread.currentThread().interrupt(); // 重置中断状态
        } finally {
            if (process != null) {
                process.destroy();
            }
        }
    }
}

test.py程序如下:

import sys
import io
from PIL import Image

def process_image():
    # 从标准输入读取字节流
    image_bytes = sys.stdin.buffer.read()
    if image_bytes:
        # 将字节流转换为图片
        image = Image.open(io.BytesIO(image_bytes))
        # 输出图片尺寸
        print(f"Image size: {image.size}")
    else:
        print("No data received")

if __name__ == "__main__":
    process_image()

添加好之后执行以下命令

javac PythonCaller.java
java PythonCaller

结果如下:
在这里插入图片描述

本文章,提供一个通过现有java项目调用python程序的方法,我这里是准备完成的是通过先用的java项目,调用训练好的图像识别模型,然后将处理好的结果返回到java项目中展示

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1813950.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Docker:认识Docker Bridge网络

文章目录 为什么需要网络管理Docker网络架构简介CNMLibNetwork驱动Docker网络管理命令网络命令基本操作网络详解docker Bridge网络 容器之间的网络通信DNS解析 为什么需要网络管理 容器的网络默认会与宿主机器以及其他的容器相互隔离,但是还需要考虑到下面的这些问…

2024年大数据、区块链与物联网国际会议(ICBDBLT 2024)

2024 International Conference on Big Data, Blockchain, and Internet of Things 【1】大会信息 会议简称:ICBDBLT 2024 大会地点:中国青岛 审稿通知:投稿后2-3日内通知 会议官网:www.icbdblt.com 【2】会议简介 即将召开的…

Linux内网数据代理与数据映射实验

背景介绍 有两台主机,其中一台可以联网,而另一台只能与联网主机,尝试通过配置,使该主机也能正常上网,这常应用于企业内部不联网的服务器,需要安全可靠或临时上网的场景,借助另一台可以上网的内…

Docker:认识Bind Mounts绑定卷

文章目录 绑定卷bind mount创建卷操作案例使用mount创建绑定卷 使用场景管理卷和绑定卷的区别? 绑定卷bind mount -v和-mount都可以进行绑定卷的创建 创建卷 功能:完成卷映射 语法: docker run -v name:directory[:options]...参数&…

python数据分析--- ch1-2 python初识入门

python数据分析--- ch1-2 python初识入门 1. 安装并启动jupyter2. 打印变量print()练一练 3. 变量与赋值 input()3.1 示例--饮料交换3.2 饮料交换完整code3.3 jupyter中写入code到py文件中3.4 在终端运行.py文件 : python 文件名3.5练一练1:简易版2&…

[leetcode]删除链表中倒数第k个结点

. - 力扣(LeetCode) class Solution { public:ListNode* trainningPlan(ListNode* head, int cnt) {int n 0;ListNode* node nullptr;for (node head; node; node node->next) {n;}for (node head; n > cnt; n--) {node node->next;}retu…

【WEB前端2024】3D智体编程:乔布斯3D纪念馆-第38课-密室逃脱-3D互动剧情

【WEB前端2024】3D智体编程:乔布斯3D纪念馆-第38课-密室逃脱 使用dtns.network德塔世界(开源的智体世界引擎),策划和设计《乔布斯超大型的开源3D纪念馆》的系列教程。dtns.network是一款主要由JavaScript编写的智体世界引擎&…

基于VLC可见光通信的室内光通信信道信噪比分析matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 matlab2022a 3.部分核心程序 ..................................................................... % 接收功率计算Pr …

周一美股集体低开后转涨,早盘仅道指小幅下跌,英伟达跌超3%后转涨超1%

美国非农就业报告发布“次日”,三大股指低开,但早盘均成功转涨。美股七姐妹涨跌各异,苹果WWDC大会今晚开幕,但早盘转跌,一度跌超1%;1拆10股正式生效的英伟达盘初曾跌超3.2%,开盘1.5小时内首次转…

纷享销客常见问题FAQ

运维和安全职责边界 应用专属是部署在客户私有云或者客户公有云租户的IT环境中的,由纷享销客与客户共同维护系统的稳定性。一般来说客户主要负责维护IT基础环境和账号权限的管理而纷享销客则负责在客户环境中进行应用系统的部署、优化和日常运维工作。在安全方面&am…

如何实现办公终端安全

在网络安全日益严峻的当下,可信白名单作为一种高效的终端安全防护手段,正在逐渐受到业界的广泛关注和应用。本文将简要探讨可信白名单如何实现终端安全的原理、方法及其在实际应用中的优势与挑战。 首先,我们需要了解可信白名单的基本原理。可…

深度探讨:为何训练精度不高却在测试中表现优异?

深度探讨:为何训练精度不高却在测试中表现优异? 在深度学习领域,我们经常遇到这样一个看似矛盾的现象:模型在训练集上的精度不是特别高,但在测试集上却能达到出色的表现。这种情况虽然不是常规,但其背后的…

2024第十六届亚洲水技术展览会Aquatech China

Aquatech China 2024第十六届亚洲水技术展览会 专注水行业覆盖全领域—荷兰阿姆斯特丹水展中国展 2024.12.11-13 上海新国际博览中心 展会背景 Aquatech品牌创立于1968年。作为水处理行业历史悠久 的展览会,荷兰国际水处理展览会(Aquatech Amsterdam)至今已有近55…

机器学习实验------PCA

目录 一、介绍 二、算法流程 (1)数据中心化 (2)计算协方差矩阵 (3)特征值分解 (4)选择特征 三、运行结果展示 四、实验中遇到的问题 五、PCA的优缺点 优点: 缺点…

基于MDS的波士顿房价数据集降维

文章目录 1. 作者介绍2. 多维尺度分析(Multi-Dimensional Scaling, MDS)介绍2.1 MDS介绍2.2 MDS的类别2.2.1度量MDS2.2.2非度量MDS 2.3 目标函数2.4 MDS降维计算步骤2.4.1计算流程2.4.2 算法示例 3.实验过程3.1数据集介绍3.2算法思路3.3算法评…

【LLM】快速了解Dify 0.6.10的核心功能:知识库检索、Agent创建和工作流编排(二)

【LLM】快速了解Dify 0.6.10的核心功能:知识库检索、Agent创建和工作流编排(二) 文章目录 【LLM】快速了解Dify 0.6.10的核心功能:知识库检索、Agent创建和工作流编排(二)一、创建一个简单的聊天助手&#…

奥英特技公园开业盛典 点燃文旅商业融合新引擎

(通讯员 赵霞)2024年6月9日,奥英汽车特技表演公园盛大开幕。这座集汽车特技、文化艺术、旅游体验于一体的全新综合性主题公园,不仅为游客带来了精彩刺激的视觉盛宴,更通过“以体促旅、以旅带文”的深度融合,助推了文旅产业与商业经济的深度融…

Redis集群(5)

集群原理 节点通信 通信流程 在分布式存储系统中,维护节点元数据(如节点负责的数据、节点的故障状态等)是关键任务。常见的元数据维护方式分为集中式和P2P方式。Redis集群采用P2P的Gossip协议,这种协议的工作原理是节点之间不断…

使用lombok帮我们生成 getter、setter、无参构造器、全参构造器、equals、hashcode

文章目录 为什么要使用lombok?lombok的使用步骤1.检查 idea 是否安装 lombok 插件2.检查是否勾选了 enable annotation processing3.导入 lombok.jar 并加入到模块中4.在实体类添加注解 测试 为什么要使用lombok? lombok可以帮我们生成 getter、setter、…

独立游戏之路:Tap篇 -- 获取OAID提升广告收益

Unity 之 获取手机:OAID、ClientId、GUID 前言一、Oaid 介绍1.1 Oaid 说明1.2 移动安全联盟(MSA)二、站在巨人的肩膀上2.1 本文实现参考2.2 本文实现效果2.3 本文相关插件三、Unity 中获取Oaid3.1 查看实现源码3.2 工程配置3.3 代码实现3.4 场景搭建四、总结前言 在当今的移动…