電子商務(wù)網(wǎng)站的作用seo排名第一的企業(yè)
windows一鍵啟動jupyter
jupyter簡介
Jupyter是一個開源的交互式計算環(huán)境,主要用于數(shù)據(jù)分析、數(shù)據(jù)可視化和科學計算。它的名字來源于三種編程語言的縮寫:Julia、Python和R,這三種語言都可以在Jupyter環(huán)境中運行。如果您想進行數(shù)據(jù)分析、科學計算、機器學習等任務(wù),Jupyter是一個非常有用的工具,因為它提供了一個交互式的環(huán)境,讓您可以探索數(shù)據(jù)、編寫代碼并實時查看結(jié)果。
Jupyter的主要特點
交互性
Jupyter環(huán)境允許用戶以交互式的方式編寫和執(zhí)行代碼。用戶可以一次性執(zhí)行一條代碼或一塊代碼,然后立即查看結(jié)果。這對于數(shù)據(jù)分析和探索性編程非常有用。
支持多種編程語
雖然最初是以支持Julia、Python和R為主,但實際上Jupyter可以支持眾多編程語言。用戶可以通過安裝相應(yīng)的內(nèi)核來擴展Jupyter的語言支持。
Notebook文檔
Jupyter Notebook是Jupyter環(huán)境的一種文件格式,它允許用戶在同一個文檔中混合編寫可執(zhí)行的代碼、可視化輸出、文本說明、公式和圖像等內(nèi)容。這使得Jupyter成為了一個非常適合分享和展示分析過程的工具。
數(shù)據(jù)可視化
Jupyter環(huán)境內(nèi)嵌了豐富的數(shù)據(jù)可視化工具,使用戶可以方便地創(chuàng)建圖表、圖像和動畫,以更好地理解數(shù)據(jù)。
靈活性
Jupyter可以在本地計算機上安裝運行,也可以在云端服務(wù)器上部署。這使得用戶可以根據(jù)自己的需求選擇適合的運行環(huán)境。
Jupyter 的安裝
在Linux上安裝Jupyter Notebook
-
安裝Python: 大多數(shù)Linux發(fā)行版都自帶Python,您可以通過以下命令檢查是否已經(jīng)安裝:
python --version
如果未安裝Python或需要更新版本,請根據(jù)您的發(fā)行版使用適當?shù)陌芾砉ぞ哌M行安裝或更新。
-
安裝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官方網(wǎng)站(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
總結(jié)一下,不管是linux還是windows安裝都是一下幾個步驟:
1. 首先安裝python環(huán)境,windows則配置一下環(huán)境2. 再安裝pip環(huán)境3. 通過pip命令安裝jupyter模塊4. 運行jupyter
如何在windows下一鍵啟動安裝jupyter?
背景(為什么要這么做?)
實際情況是我們想做一個在線的python編輯器,需要用戶能再瀏覽器進行在線編程python,并且能實時輸出python代碼執(zhí)行的結(jié)果。有人可能會說為什么不直接通過代碼進行執(zhí)行服務(wù)器上的python命令來執(zhí)行python代碼呢,但是這樣其實做不到實時返回執(zhí)行結(jié)果的,比如一個for循環(huán)打印無法實現(xiàn),比如用戶需要輸入,接受輸入以后展示輸出結(jié)果。
設(shè)計思路(怎么做?)
問題
windows
執(zhí)行意見安裝一般都是一個exe
程序點擊一鍵啟動,如何打包exe
?- 啟動如何安裝
python
和pip
的環(huán)境
解決問題
- 目前打包
exe
的方式一般有兩種: 使用pyinstaller
打包Python
程序為.exe
和使用Visual Studio
打包C#
程序為.exe
,這里我們對python
代碼比較熟悉,選擇使用pyinstaller
- 首先
python
有windows
的安裝包,如果通過python
代碼去安裝python.exe
,體驗非常不好,需用用戶去點擊安裝。這里我們換個思路,找到python
官網(wǎng)提供免安裝版本的python
包。
不要開心的太早了,免安裝版本的python
包不沒有pip
模塊的,所以就得考慮安裝pip
模塊。python
安裝pip
模塊見:免安裝版本python安裝pip模塊。
總結(jié)
我們再總結(jié)一下前面的思路,進行一個比較詳細的設(shè)計思路:
- 下載官方
python
進行解壓,并且將get-pip.py
放入到python
文件夾下 - 首先判斷
python
是否已經(jīng)安裝過,未安裝則配置python
環(huán)境變量 - 首先判斷
pip
模塊是否已經(jīng)安裝過,未安裝通過python
代碼安裝pip模塊 - 安裝完以后
pip
模塊后,再配置pip
的環(huán)境變量 - 為了防止安裝
jupyter
超時,通過python
代碼更換鏡像源為國內(nèi)鏡像源 - 使用
pip
進行安裝jupyter
- 啟動
jupyter
此步驟則是完整的代碼邏輯,其實這里并不完整,因為你安裝了jupyter
,你肯定不想每次使用的時候都去點擊exe
來啟動jupyter
,所以是需要做一個windows
的開機自啟動的,這個后面會降到如何做開機自啟。
代碼實現(xiàn)
jupyter 打包exe 代碼實現(xiàn)
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)# 檢查返回結(jié)果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環(huán)境變量current_path = os.environ["PATH"]# 在當前的PATH后追加新路徑,并使用os.pathsep分隔new_path_value = current_path + os.pathsep + new_path# 更新環(huán)境變量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:# 設(shè)置環(huán)境變量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"成功追加環(huán)境變量: {env_var_name}={env_var_value}")except subprocess.CalledProcessError:log.info(f"追加環(huán)境變量時出錯: {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():# 配置環(huán)境變量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
實現(xiàn)windows
自啟
思路
- 首先要了解
windows
如何實現(xiàn)開機自啟 - 如何通過
python
代碼去打包exe
程序?qū)崿F(xiàn)開機自啟
解決方案
一. 要實現(xiàn)在 Windows
開機時自動啟動 .exe
程序,你可以通過以下幾種方式來設(shè)置:
- 將程序快捷方式添加到啟動文件夾:
- 按下
Win + R
鍵,打開“運行”對話框。 - 輸入
shell:startup
,然后按回車,這將打開當前用戶的啟動文件夾。 - 在啟動文件夾中創(chuàng)建程序的快捷方式,可以通過右鍵點擊程序的
.exe
文件,然后選擇“發(fā)送到” -> “桌面(創(chuàng)建快捷方式)”,然后將生成的快捷方式拖放到啟動文件夾中。
- 按下
- 注冊表編輯器:
- 按下
Win + R
鍵,打開“運行”對話框。 - 輸入
regedit
,然后按回車,打開注冊表編輯器。 - 導航到
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run
。 - 右鍵點擊右側(cè)的空白處,選擇“新建” -> “字符串值”。
- 將新建的字符串值命名為你想要的名稱,然后修改其數(shù)值數(shù)據(jù)為程序的完整路徑,比如
C:\path\to\your\program.exe
。
- 按下
- 任務(wù)計劃程序:
- 搜索并打開“任務(wù)計劃程序”。
- 在左側(cè)導航欄,選擇“創(chuàng)建基本任務(wù)”。
- 按照向?qū)У闹甘?#xff0c;設(shè)置任務(wù)的名稱和觸發(fā)條件,選擇“啟動程序”作為操作類型。
- 指定要啟動的程序的路徑,然后完成創(chuàng)建任務(wù)的過程。
以上三個方式都可以實現(xiàn)開機自啟,先看第二個方案需要改注冊表,理論上代碼可行,第三個方案需要設(shè)計任務(wù)計劃,通過代碼實現(xiàn)相對可行性較低,再看第一個所有的windows
系統(tǒng),startup
文件目錄相對固定,只需要創(chuàng)建快捷方式即可,相對簡單,如是我們采用方案一。
二. 通過代碼實現(xiàn)開啟及自啟
代碼實現(xiàn)可行,主要問題就是如果不是使用管理員權(quán)限執(zhí)行exe的話就需要強制獲取一下admin
的管理員權(quán)限.
代碼實現(xiàn):
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() # 配置自啟動服務(wù)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