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