windows一键启动jupyter
windows一键启动jupyter
jupyter简介
Jupyter是一个开源的交互式计算环境,主要用于数据分析、数据可视化和科学计算。它的名字来源于三种编程语言的缩写:Julia、Python和R,这三种语言都可以在Jupyter环境中运行。如果您想进行数据分析、科学计算、机器学习等任务,Jupyter是一个非常有用的工具,因为它提供了一个交互式的环境,让您可以探索数据、编写代码并实时查看结果。
Jupyter的主要特点
交互性
Jupyter环境允许用户以交互式的方式编写和执行代码。用户可以一次性执行一条代码或一块代码,然后立即查看结果。这对于数据分析和探索性编程非常有用。
支持多种编程语
虽然最初是以支持Julia、Python和R为主,但实际上Jupyter可以支持众多编程语言。用户可以通过安装相应的内核来扩展Jupyter的语言支持。
Notebook文档
Jupyter Notebook是Jupyter环境的一种文件格式,它允许用户在同一个文档中混合编写可执行的代码、可视化输出、文本说明、公式和图像等内容。这使得Jupyter成为了一个非常适合分享和展示分析过程的工具。
数据可视化
Jupyter环境内嵌了丰富的数据可视化工具,使用户可以方便地创建图表、图像和动画,以更好地理解数据。
灵活性
Jupyter可以在本地计算机上安装运行,也可以在云端服务器上部署。这使得用户可以根据自己的需求选择适合的运行环境。
Jupyter 的安装
在Linux上安装Jupyter Notebook
-
安装Python: 大多数Linux发行版都自带Python,您可以通过以下命令检查是否已经安装:
python --version如果未安装Python或需要更新版本,请根据您的发行版使用适当的包管理工具进行安装或更新。
-
安装pip: 如果未安装pip,可以使用以下命令安装:
sudo apt-get update sudo apt-get install python3-pip -
安装Jupyter Notebook: 在终端中运行以下命令来安装Jupyter Notebook:
python3 -m pip install jupyter -
启动Jupyter Notebook: 在终端中运行以下命令来启动Jupyter Notebook:
jupyter notebook
在Windows上安装Jupyter Notebook
-
安装Python和pip: 可以从Python官方网站(https://www.python.org/downloads/windows/)下载Python安装程序,并确保勾选“Add Python to PATH”选项。
-
安装Jupyter Notebook: 在命令提示符(Command Prompt)中运行以下命令来安装Jupyter Notebook:
python -m pip install jupyter -
启动Jupyter Notebook: 在命令提示符中运行以下命令来启动Jupyter Notebook:
jupyter notebook
总结一下,不管是linux还是windows安装都是一下几个步骤:
1. 首先安装python环境,windows则配置一下环境2. 再安装pip环境3. 通过pip命令安装jupyter模块4. 运行jupyter
如何在windows下一键启动安装jupyter?
背景(为什么要这么做?)
实际情况是我们想做一个在线的python编辑器,需要用户能再浏览器进行在线编程python,并且能实时输出python代码执行的结果。有人可能会说为什么不直接通过代码进行执行服务器上的python命令来执行python代码呢,但是这样其实做不到实时返回执行结果的,比如一个for循环打印无法实现,比如用户需要输入,接受输入以后展示输出结果。
设计思路(怎么做?)
问题
windows执行意见安装一般都是一个exe程序点击一键启动,如何打包exe?- 启动如何安装
python和pip的环境
解决问题
- 目前打包
exe的方式一般有两种: 使用pyinstaller打包Python程序为.exe和使用Visual Studio打包C#程序为.exe,这里我们对python代码比较熟悉,选择使用pyinstaller - 首先
python有windows的安装包,如果通过python代码去安装python.exe,体验非常不好,需用用户去点击安装。这里我们换个思路,找到python官网提供免安装版本的python包。
不要开心的太早了,免安装版本的python包不没有pip模块的,所以就得考虑安装pip模块。python安装pip模块见:免安装版本python安装pip模块。
总结
我们再总结一下前面的思路,进行一个比较详细的设计思路:
- 下载官方
python进行解压,并且将get-pip.py放入到python文件夹下 - 首先判断
python是否已经安装过,未安装则配置python环境变量 - 首先判断
pip模块是否已经安装过,未安装通过python代码安装pip模块 - 安装完以后
pip模块后,再配置pip的环境变量 - 为了防止安装
jupyter超时,通过python代码更换镜像源为国内镜像源 - 使用
pip进行安装jupyter - 启动
jupyter
此步骤则是完整的代码逻辑,其实这里并不完整,因为你安装了jupyter ,你肯定不想每次使用的时候都去点击exe来启动jupyter,所以是需要做一个windows的开机自启动的,这个后面会降到如何做开机自启。
代码实现
jupyter 打包exe 代码实现
jupyter.py
import os
import subprocess
import traceback
import socket
from utils.logutils import logpython_path = "python"
scripts_path = "python\Scripts"def is_installed(model):try:# 尝试运行 python 命令result = subprocess.run([model, "--version"], stdout=subprocess.PIPE, stderr=subprocess.PIPE)# 检查返回结果if result.returncode == 0:return Trueelse:return Falseexcept FileNotFoundError:return Falsedef install_pip_module():if not is_installed("pip"):# 安装 pip 模块try:new_path = os.path.join(os.getcwd(), f'python')subprocess.check_call(["python", f'{new_path}\get-pip.py'])log.info("成功安装 pip 模块")except subprocess.CalledProcessError:log.info("安装 pip 模块时出错")def configure_path(path):# Assuming the path to add is '/path/to/python/bin'new_path = os.path.join(os.getcwd(), f'{path}')# 获取当前的PATH环境变量current_path = os.environ["PATH"]# 在当前的PATH后追加新路径,并使用os.pathsep分隔new_path_value = current_path + os.pathsep + new_path# 更新环境变量os.environ["PATH"] = new_path_valuedef configure_path_env_variable():if not is_installed("pip") and is_installed("python"):env_var_name = "PATH"python_path = os.path.join(os.getcwd(), f'python')scripts_path = os.path.join(os.getcwd(), f'python\Scripts')env_var_value = python_path + os.pathsep + scripts_pathtry:# 设置环境变量configure_path(f'python')configure_path(f'python\Scripts')subprocess.check_call(["setx", env_var_name, f"%{env_var_name}%;{env_var_value}"])log.info(f"成功追加环境变量: {env_var_name}={env_var_value}")except subprocess.CalledProcessError:log.info(f"追加环境变量时出错: {env_var_name}")def change_mirror_source():if not is_installed("pip"):# 更换镜像源pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simplemirror_url = "https://pypi.tuna.tsinghua.edu.cn/simple"os.system('pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple')log.info(f"已更换镜像源:{mirror_url}")def install_jupyter():if not is_installed("jupyter"):# 使用 pip 安装 jupytertry:subprocess.check_call(["python", "-m", "pip", "install", "jupyter_kernel_gateway"])log.info("成功安装 Jupyter")except subprocess.CalledProcessError:log.info("安装 Jupyter 时出错")def start_jupyter():# 启动 Jupyter start /B jupyter kernelgatewaycmd = ['jupyter', 'kernelgateway', '--KernelGatewayApp.ip=0.0.0.0', '--KernelGatewayApp.port=18012','--KernelGatewayApp.allow_credentials=*', '--KernelGatewayApp.allow_headers=*','--KernelGatewayApp.allow_methods=*', '--KernelGatewayApp.allow_origin=*']try:subprocess.Popen(cmd, creationflags=subprocess.CREATE_NEW_CONSOLE, shell=True)log.info("Jupyter kernel gateway 启动成功")except OSError as error:log.error(error)def is_running():try:s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)s.settimeout(3)result = s.connect_ex(('127.0.0.1', 18012))s.close()if result == 0:log.info("AI-Link.exe is already running or port conflict!")return Trueelse:return Falseexcept:log.info("Exception of is_running:{0}".format(traceback.format_exc()))return Falsedef main_process():if not is_running():# 配置环境变量configure_path_env_variable()# 安装pip模块install_pip_module()# 更换镜像源change_mirror_source()# 使用pip进行安装jupyterinstall_jupyter()# 启动jupyterstart_jupyter()if __name__ == "__main__":main_process()
logutils.py
# -*- coding: utf-8 -*-
import time
import win32api
import win32conclass Log(object):def write(self, level, msg):date = time.strftime("%Y-%m-%d", time.localtime())log_file = r"{0}{1}{2}".format( "jupyter.", date, ".log")line = "{0} {1} {2}\n".format(time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()), level, msg)with open(log_file, 'a', encoding='utf-8') as f:f.write(line)def info(self, msg):self.write("INFO", msg)def error(self, msg):self.write("ERROR", msg)@staticmethoddef notice_info(msg: str):win32api.MessageBox(0, f"{msg}", "警告", win32con.MB_ICONWARNING)log = Log()
jupyter 打包exe 实现windows自启
思路
- 首先要了解
windows如何实现开机自启 - 如何通过
python代码去打包exe程序实现开机自启
解决方案
一. 要实现在 Windows 开机时自动启动 .exe 程序,你可以通过以下几种方式来设置:
- 将程序快捷方式添加到启动文件夹:
- 按下
Win + R键,打开“运行”对话框。 - 输入
shell:startup,然后按回车,这将打开当前用户的启动文件夹。 - 在启动文件夹中创建程序的快捷方式,可以通过右键点击程序的
.exe文件,然后选择“发送到” -> “桌面(创建快捷方式)”,然后将生成的快捷方式拖放到启动文件夹中。
- 按下
- 注册表编辑器:
- 按下
Win + R键,打开“运行”对话框。 - 输入
regedit,然后按回车,打开注册表编辑器。 - 导航到
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run。 - 右键点击右侧的空白处,选择“新建” -> “字符串值”。
- 将新建的字符串值命名为你想要的名称,然后修改其数值数据为程序的完整路径,比如
C:\path\to\your\program.exe。
- 按下
- 任务计划程序:
- 搜索并打开“任务计划程序”。
- 在左侧导航栏,选择“创建基本任务”。
- 按照向导的指示,设置任务的名称和触发条件,选择“启动程序”作为操作类型。
- 指定要启动的程序的路径,然后完成创建任务的过程。
以上三个方式都可以实现开机自启,先看第二个方案需要改注册表,理论上代码可行,第三个方案需要设计任务计划,通过代码实现相对可行性较低,再看第一个所有的windows 系统,startup文件目录相对固定,只需要创建快捷方式即可,相对简单,如是我们采用方案一。
二. 通过代码实现开启及自启
代码实现可行,主要问题就是如果不是使用管理员权限执行exe的话就需要强制获取一下admin的管理员权限.
代码实现:
installer.py
# -*- coding: utf-8 -*-
import os
import traceback
import ctypes
import sys
import win32com.client as clientshell = client.Dispatch("WScript.Shell")
from utils.logutils import logdef is_admin():try:return ctypes.windll.shell32.IsUserAnAdmin()except Exception as e:log.error(e)return Falsedef create_shortcut():try:filename = os.path.join(os.getcwd(), f'jupyter.exe')lnkName = f"C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp\jupyter.lnk"shortcut = shell.CreateShortCut(lnkName)shortcut.TargetPath = filenameshortcut.save()except:log.info("Exception of creating a shortcut:{0}".format(traceback.format_exc()))def jupyter_installer():if is_admin():create_shortcut() # 配置自启动服务else:ctypes.windll.shell32.ShellExecuteW(None, "runas", sys.executable, __file__, None, 1)if __name__ == '__main__':try:jupyter_installer()except:log.info("Service initialization failed:{0}".format(traceback.format_exc()))
pyinstaller 打包exe
pyinstaller -F install.py
pyinstaller -F jupyter.py
源码地址以及打包后的exe文件
源码地址路径
https://github.com/LBJWt/windows-jupyter
打包后的完整exe的文件下载地址
https://download.csdn.net/download/wagnteng/88245132
相关文章:
windows一键启动jupyter
windows一键启动jupyter jupyter简介 Jupyter是一个开源的交互式计算环境,主要用于数据分析、数据可视化和科学计算。它的名字来源于三种编程语言的缩写:Julia、Python和R,这三种语言都可以在Jupyter环境中运行。如果您想进行数据分析、科学…...
树形结构的快速生成
背景 相信大家都遇到过树形结构,像是文件列表、多级菜单、评论区的设计等等,我们都发现它有很多层级,第一级可以有多个,下边的每一个层级也可以有多个;有的可以设计成无限层级的,有的只能设计成两级。那么…...
Android笔记(二十七):自定义Dialog实现居中Toast
背景 记录实现符合项目需求的Toast弹窗 具体实现 class MyTipDialog private constructor(val context: Activity): Dialog(context, R.style.MyTipTheme) {val resId ObservableField(0)private val mainHandler Handler(Looper.getMainLooper())init {setCanceledOnTouc…...
css实现文字的渐变,适合大屏
1 在全局写一个全局样式,文字渐变 2 在组件中使用 CSS3利用-webkit-background-clip: text;实现文字渐变效果_css如何把盒子底部的文字变成透明渐变_I俩月亮的博客-CSDN博客 CSS 如何实现文字渐变色 ?_css字体颜色渐变_一个水瓶座程序猿.的博客-CSDN博客…...
软考高级系统架构设计师系列论文八十七:论企业应用集成
软考高级系统架构设计师系列论文八十七:论企业应用集成 一、企业应用集成相关知识点二、摘要三、正文四、总结一、企业应用集成相关知识点 软考高级系统架构设计师系列之:企业集成平台技术的应用和架构设计二、摘要 本文讨论了某公司的应用系统集成项目。某公司为了应对市场变…...
C++设计模式之适配器模式
一、适配器模式 适配器模式(Adapter Pattern)是一种结构型设计模式,用于将一个类的接口转换成另一个类所期望的接口,以便两个类能够协同工作。 适配器模式可以解决现有类接口与所需接口不匹配的问题,使得原本因接口不…...
山西电力市场日前价格预测【2023-08-24】
日前价格预测 预测明日(2023-08-24)山西电力市场全天平均日前电价为319.98元/MWh。其中,最高日前电价为370.78元/MWh,预计出现在19: 30。最低日前电价为272.42元/MWh,预计出现在12: 45。 价差方向预测 1: 实…...
一文速学-让神经网络不再神秘,一天速学神经网络基础(一)
前言 思索了很久到底要不要出深度学习内容,毕竟在数学建模专栏里边的机器学习内容还有一大半算法没有更新,很多坑都没有填满,而且现在深度学习的文章和学习课程都十分的多,我考虑了很久决定还是得出神经网络系列文章,…...
百度Q2财报:营收341亿元实现加速增长,净利润高速增长44%,增长强劲全线重构
北京时间8月22日,百度发布了截至2023年6月30日的第二季度未经审计的财务报告。第二季度,百度实现营收341亿元,同比增长15%;归属百度的净利润(non-GAAP)达到80亿元,同比增长44%。营收和利润双双实…...
ARM DIY(二)配置晶振频率
文章目录 前言串口乱码问题定位内核修改晶振频率uboot 修改晶振频率番外篇 前言 上篇文章《ARM DIY 硬件调试》介绍了 DIY ARM 板的基础硬件焊接,包括电源、SOC、SD 卡座等,板子已经可以跑起来了。 但是发现串口乱码,今天就来解决串口乱码问…...
高等数学:线性代数-第三章
文章目录 第3章 矩阵的初等变换与线性方程组3.1 矩阵的初等变换3.2 矩阵的秩3.3 方程组的解 第3章 矩阵的初等变换与线性方程组 3.1 矩阵的初等变换 矩阵的初等变换 下面三种变换称为矩阵的初等变换 对换两行(列),记作 r i ↔ r j ( c i …...
深入理解 SQL 注入攻击原理与防御措施
系列文章目录 文章目录 系列文章目录前言一、SQL 注入的原理二、防御 SQL 注入攻击的措施1. 使用参数化查询2.输入验证与过滤3.最小权限原则4.不要动态拼接 SQL5.ORM 框架6.转义特殊字符三、实例演示总结前言 SQL 注入是一种常见的网络攻击方式,攻击者通过在输入框等用户交互…...
QT5.12.12通过ODBC连接到GBase 8s数据库(CentOS)
本示例使用的环境如下: 硬件平台:x86_64(amd64)操作系统:CentOS 7.8 2003数据库版本(含CSDK):GBase 8s V8.8 3.0.0_1 为什么使用QT 5.12.10?该版本包含QODBC。 1&#…...
爱校对发布全新PDF校对工具,为用户带来更为便捷的校正体验
随着数字化文档使用的普及,PDF格式已经成为最为广泛使用的文件格式之一。为满足广大用户对于高效、准确PDF文档校对的需求,爱校对团队经过深入研发,正式推出全新的PDF校对工具! 这一全新工具针对PDF文件格式进行了深度优化&#…...
记录protocol buffers Mac安装
使用brew安装最新的protobuf 在Mac 上安装,使用brew 可以安装最新的protobuf。这个也比较简单,简单说一下。 首先先检查一下是否安装了brew。如果没有安装brew的话,请先安装brew.可以通过brew --version来检查 使用brew install protobuf 来…...
基于Jenkins自动打包并部署docker、PHP环境,ansible部署-------从小白到大神之路之学习运维第86天
第四阶段提升 时 间:2023年8月23日 参加人:全班人员 内 容: 基于Jenkins部署docker、PHP环境 目录 一、环境部署 (一)实验环境,服务器设置 (二)所有主机关闭防火墙和selinu…...
【附安装包】Midas Civil2019安装教程
软件下载 软件:Midas Civil版本:2019语言:简体中文大小:868.36M安装环境:Win11/Win10/Win8/Win7硬件要求:CPU2.5GHz 内存4G(或更高)下载通道①百度网盘丨64位下载链接:https://pan.…...
Apache StreamPark系列教程第一篇——安装和体验
一、StreamPark介绍 实时即未来,在实时处理流域 Apache Spark 和 Apache Flink 是一个伟大的进步,尤其是Apache Flink被普遍认为是下一代大数据流计算引擎, 我们在使用 Flink & Spark 时发现从编程模型, 启动配置到运维管理都有很多可以抽象共用的地方, 我们将一些好的经验…...
mysql replace insert update delete
目录 mysql replace && insert && update && delete replace mysql replace && insert && update && delete replace 我们在使用数据库时可能会经常遇到这种情况。如果一个表在一个字段上建立了唯一索引,当我们再向…...
实现SSM简易商城项目的商品查询功能
实现SSM简易商城项目的商品查询功能 介绍 在SSM(SpringSpringMVCMyBatis)框架下,我们可以轻松地实现一个简易商城项目。本博客将重点介绍如何实现商品查询功能,帮助读者了解并掌握该功能的开发过程。 步骤 1. 创建数据库表 首…...
Python爬虫实战:研究MechanicalSoup库相关技术
一、MechanicalSoup 库概述 1.1 库简介 MechanicalSoup 是一个 Python 库,专为自动化交互网站而设计。它结合了 requests 的 HTTP 请求能力和 BeautifulSoup 的 HTML 解析能力,提供了直观的 API,让我们可以像人类用户一样浏览网页、填写表单和提交请求。 1.2 主要功能特点…...
Chapter03-Authentication vulnerabilities
文章目录 1. 身份验证简介1.1 What is authentication1.2 difference between authentication and authorization1.3 身份验证机制失效的原因1.4 身份验证机制失效的影响 2. 基于登录功能的漏洞2.1 密码爆破2.2 用户名枚举2.3 有缺陷的暴力破解防护2.3.1 如果用户登录尝试失败次…...
DeepSeek 赋能智慧能源:微电网优化调度的智能革新路径
目录 一、智慧能源微电网优化调度概述1.1 智慧能源微电网概念1.2 优化调度的重要性1.3 目前面临的挑战 二、DeepSeek 技术探秘2.1 DeepSeek 技术原理2.2 DeepSeek 独特优势2.3 DeepSeek 在 AI 领域地位 三、DeepSeek 在微电网优化调度中的应用剖析3.1 数据处理与分析3.2 预测与…...
基于uniapp+WebSocket实现聊天对话、消息监听、消息推送、聊天室等功能,多端兼容
基于 UniApp + WebSocket实现多端兼容的实时通讯系统,涵盖WebSocket连接建立、消息收发机制、多端兼容性配置、消息实时监听等功能,适配微信小程序、H5、Android、iOS等终端 目录 技术选型分析WebSocket协议优势UniApp跨平台特性WebSocket 基础实现连接管理消息收发连接…...
无法与IP建立连接,未能下载VSCode服务器
如题,在远程连接服务器的时候突然遇到了这个提示。 查阅了一圈,发现是VSCode版本自动更新惹的祸!!! 在VSCode的帮助->关于这里发现前几天VSCode自动更新了,我的版本号变成了1.100.3 才导致了远程连接出…...
java调用dll出现unsatisfiedLinkError以及JNA和JNI的区别
UnsatisfiedLinkError 在对接硬件设备中,我们会遇到使用 java 调用 dll文件 的情况,此时大概率出现UnsatisfiedLinkError链接错误,原因可能有如下几种 类名错误包名错误方法名参数错误使用 JNI 协议调用,结果 dll 未实现 JNI 协…...
macOS多出来了:Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用
文章目录 问题现象问题原因解决办法 问题现象 macOS启动台(Launchpad)多出来了:Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用。 问题原因 很明显,都是Google家的办公全家桶。这些应用并不是通过独立安装的…...
linux 错误码总结
1,错误码的概念与作用 在Linux系统中,错误码是系统调用或库函数在执行失败时返回的特定数值,用于指示具体的错误类型。这些错误码通过全局变量errno来存储和传递,errno由操作系统维护,保存最近一次发生的错误信息。值得注意的是,errno的值在每次系统调用或函数调用失败时…...
高危文件识别的常用算法:原理、应用与企业场景
高危文件识别的常用算法:原理、应用与企业场景 高危文件识别旨在检测可能导致安全威胁的文件,如包含恶意代码、敏感数据或欺诈内容的文档,在企业协同办公环境中(如Teams、Google Workspace)尤为重要。结合大模型技术&…...
Springcloud:Eureka 高可用集群搭建实战(服务注册与发现的底层原理与避坑指南)
引言:为什么 Eureka 依然是存量系统的核心? 尽管 Nacos 等新注册中心崛起,但金融、电力等保守行业仍有大量系统运行在 Eureka 上。理解其高可用设计与自我保护机制,是保障分布式系统稳定的必修课。本文将手把手带你搭建生产级 Eur…...
