Jupyter是一个开源的交互式计算环境,主要用于数据分析、数据可视化和科学计算。它的名字来源于三种编程语言的缩写:Julia、Python和R,这三种语言都可以在Jupyter环境中运行。如果您想进行数据分析、科学计算、机器学习等任务,Jupyter是一个非常有用的工具,因为它提供了一个交互式的环境,让您可以探索数据、编写代码并实时查看结果。
Jupyter环境允许用户以交互式的方式编写和执行代码。用户可以一次性执行一条代码或一块代码,然后立即查看结果。这对于数据分析和探索性编程非常有用。
虽然最初是以支持Julia、Python和R为主,但实际上Jupyter可以支持众多编程语言。用户可以通过安装相应的内核来扩展Jupyter的语言支持。
Jupyter Notebook是Jupyter环境的一种文件格式,它允许用户在同一个文档中混合编写可执行的代码、可视化输出、文本说明、公式和图像等内容。这使得Jupyter成为了一个非常适合分享和展示分析过程的工具。
Jupyter环境内嵌了丰富的数据可视化工具,使用户可以方便地创建图表、图像和动画,以更好地理解数据。
Jupyter可以在本地计算机上安装运行,也可以在云端服务器上部署。这使得用户可以根据自己的需求选择适合的运行环境。
安装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
安装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
实际情况是我们想做一个在线的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.py
import os
import subprocess
import traceback
import socket
from utils.logutils import log
python_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 True
else:
return False
except FileNotFoundError:
return False
def 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_value
def 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_path
try:
# 设置环境变量
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/simple
mirror_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 安装 jupyter
try:
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 kernelgateway
cmd = ['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 True
else:
return False
except:
log.info("Exception of is_running:{0}".format(traceback.format_exc()))
return False
def main_process():
if not is_running():
# 配置环境变量
configure_path_env_variable()
# 安装pip模块
install_pip_module()
# 更换镜像源
change_mirror_source()
# 使用pip进行安装jupyter
install_jupyter()
# 启动jupyter
start_jupyter()
if __name__ == "__main__":
main_process()
logutils.py
# -*- coding: utf-8 -*-
import time
import win32api
import win32con
class 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)
@staticmethod
def 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 client
shell = client.Dispatch("WScript.Shell")
from utils.logutils import log
def is_admin():
try:
return ctypes.windll.shell32.IsUserAnAdmin()
except Exception as e:
log.error(e)
return False
def 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 = filename
shortcut.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 -F install.py
pyinstaller -F jupyter.py
exe
文件https://github.com/LBJWt/windows-jupyter
https://download.csdn.net/download/wagnteng/88245132