当前位置: 首页 > news >正文

有关毕业设计的网站成都青白江网站建设

有关毕业设计的网站,成都青白江网站建设,网站建设经济效益,简述网站的建设步骤效果 起因 现在springboot项目的自动化部署已经非常普遍#xff0c;有用Jenkins的#xff0c;有用git钩子函数的#xff0c;有用docker的…等等。这段时间在玩python#xff0c;想着用python实现自动化部署#xff0c;即能锻炼下编码能力#xff0c;又方便运维。于是开始…效果 起因 现在springboot项目的自动化部署已经非常普遍有用Jenkins的有用git钩子函数的有用docker的…等等。这段时间在玩python想着用python实现自动化部署即能锻炼下编码能力又方便运维。于是开始着手写了一个exe程序可直接在任何windows电脑上运行不具备python环境的windows电脑也可以运行。有兴趣的小伙伴可以跟着代码一起练一练噢写的详细一点对python新手也很友好。 实现步骤 开发准备 具有python基本环境和ide的windows或macOS电脑一台安装打包工具pip install pyinstaller一点小小的python基础 步骤 1. 导入依赖 新建一个py文件可以把它命名为 deployment.py名字随意哈什么名儿都可以然后把下面的库导入语句copy到此py文件中 import os #用于-提取文件名 import re #用于-正则表达式 import time #用于-线程休眠 import paramiko #用于-远程执行linux命令 from alive_progress import alive_bar #用于-进度条工具类 from cryptography.fernet import Fernet #用于-加解密代码 import base64 #用于-加解密代码 import hashlib #用于-加解密代码 在导入依赖的时候可能有些依赖咱们的电脑上之前没下载过不要紧只需要在pycharm中按 altenter就可以自动导入了PyCharm跟Idea的快捷键一模一样可以按Idea的习惯使用。而且在python中还不用配置maven或pom文件非常方便。 2. 输入校验 部署毕竟是件严谨的事情我们增加个部署密钥校验我的这个部署密钥承担了以下的功能 确保部署的安全性不是谁拿到这个exe程序都能运行的哼~傲娇密钥字符串用-分割开前面的区分环境后面的区分项目或模块。如果同学们不需要区分项目子模块就不需要搞这么复杂随便定义一个密钥就好了 import os #用于-提取文件名 import re #用于-正则表达式 import time #用于-线程休眠 import paramiko #用于-远程执行linux命令 from alive_progress import alive_bar #用于-进度条工具类 from cryptography.fernet import Fernet #用于-加解密代码 import base64 #用于-加解密代码 import hashlib #用于-加解密代码 #检查密钥格式 def check_deploy_sign(deploy_site): #确保密钥只能是以下4个之一才能继续往下操作否则无限循环输入 或 退出程序if deploy_site ! pro-main and deploy_site ! pro-manage and deploy_site ! test-main and deploy_site ! test-manage: #校验失败一直校验new_deploy_site input(错误请填写部署密钥) check_deploy_sign(new_deploy_site) #校验成功退出return deploy_site try: deploy_sign input(提示请填写部署密钥) deploy_sign check_deploy_sign(deploy_sign) # 部署环境 pro代表生成环境test代表测试环境deploy_server deploy_sign.split(-)[0] # 部署模块或项目 manage代表manage模块main代表main模块 deploy_site deploy_sign.split(-)[1] # 打包时的包名三目运算符package_name production if deploy_server pro else staging except Exception as e: print(f异常: {str(e)}) 上面的代码中 增加了全局的异常处理类似Java的try catch也定义了一些基本的变量。密钥是一串由短线连接的字符串短线前的代码用以区分环境短线后的代码用以区分模块或项目。另外上面代码中的package_name是打包时的包名即profiles.profile.id一般配置在springboot项目pom文件中的编辑模块类似下面这样: 3. 连接linux服务器 import os #用于-提取文件名 import re #用于-正则表达式 import time #用于-线程休眠 import paramiko #用于-远程执行linux命令 from alive_progress import alive_bar #用于-进度条工具类 from cryptography.fernet import Fernet #用于-加解密代码 import base64 #用于-加解密代码 import hashlib #用于-加解密代码 #检查密钥格式 def check_deploy_sign(deploy_site): #确保密钥只能是以下4个之一才能继续往下操作否则无限循环输入 或 退出程序if deploy_site ! pro-main and deploy_site ! pro-manage and deploy_site ! test-main and deploy_site ! test-manage: #校验失败一直校验new_deploy_site input(错误请填写部署密钥) check_deploy_sign(new_deploy_site) #校验成功退出return deploy_site # 连接服务器 def connect_service(deploy_server):server_password server_host sign hashlib.sha256(deploy_server.encode()).digest() sign base64.urlsafe_b64encode(sign) if deploy_server pro: server_password decrypt_str(sign, service_password_pro) server_host decrypt_str(sign, service_host_pro) elif deploy_server test: server_password decrypt_str(sign, service_password_test) server_host decrypt_str(sign, service_host_test) else: raise Exception(失败部署服务器标识有误) # 连接远程服务器 ssh paramiko.SSHClient() ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) ssh.connect(server_host, usernameroot, passwordserver_password) return ssh # 解密密码 def decrypt_str(key, encrypted_password): f Fernet(key) decrypted_password f.decrypt(encrypted_password).decode() return decrypted_passwordtry: # 服务器环境信息的加密字符串包含各服务器的 ip和密码 service_password_pro asdatrgsd service_password_test sgherfhdf service_host_pro jfhgfvdcfdtr service_host_test jutyrbfvretdeploy_sign input(提示请填写部署密钥) deploy_sign check_deploy_sign(deploy_sign) # 部署环境 pro代表生成环境test代表测试环境deploy_server deploy_sign.split(-)[0] # 部署模块或项目 manage代表manage模块main代表main模块 deploy_site deploy_sign.split(-)[1] # 打包时的包名三目运算符package_name production if deploy_server pro else staging #进度条with alive_bar(7, force_ttyTrue, title进度) as bar: # 连接服务器 ssh connect_service(deploy_server) bar(0.1) print(完成-服务器连接成功) time.sleep(0.5) except Exception as e: print(f异常: {str(e)}) 在连接服务器之前我们加个进度条显示方便查看部署到哪一步了要点讲解 with alive_bar 中放的事需要进度条显示的步骤connect_service是连接服务器的方法主机的ip和密码我们用加密的密文显示解密的密钥就是 手动输入的部署密钥当一段逻辑执行完成后通过bar(0.1)来显示进度条进度alive_bar的第一个参数就是步骤总数 4. 部署工具主逻辑 代码要点讲解 下面的代码是工程的全部代码主要包含了以下逻辑 连接服务器进入到项目工程目录拉取git代码编译公共依赖的代码有的项目不一定有公共模块可酌情删减编译打包程序代码杀死旧进程寻找编译好的程序jar包并启动检测启动结果 import os #用于-提取文件名 import re #用于-正则表达式 import time #用于-线程休眠 import paramiko #用于-远程执行linux命令 from alive_progress import alive_bar #用于-进度条工具类 from cryptography.fernet import Fernet #用于-加解密代码 import base64 #用于-加解密代码 import hashlib #用于-加解密代码def check_deploy_sign(deploy_site):if deploy_site ! pro-main and deploy_site ! pro-manage and deploy_site ! test-main and deploy_site ! test-manage:new_deploy_site input(错误请填写部署密钥)check_deploy_sign(new_deploy_site)return deploy_site# 解密密码 def decrypt_str(key, encrypted_password):f Fernet(key)decrypted_password f.decrypt(encrypted_password).decode()return decrypted_password# 执行远程命令 def execute_command(ssh, command):stdin, stdout, stderr ssh.exec_command(command)stdout.channel.recv_exit_status() # 等待命令执行完毕output stdout.read().decode(utf-8)time.sleep(0.5)return output# 执行远程命令 def execute_command_shell(shell, command, endword):shell.send(command \n)output while True:while shell.recv_ready():recv shell.recv(1024).decode(utf-8, errorsignore)output recvif endword # :if output.endswith($ ) or output.endswith(# ):breakelif endword in output:breaktime.sleep(0.5)return output# 连接服务器 def connect_service(deploy_server): server_password server_host sign hashlib.sha256(deploy_server.encode()).digest()sign base64.urlsafe_b64encode(sign)if deploy_server pro:server_password decrypt_str(sign, service_password_pro)server_host decrypt_str(sign, service_host_pro)elif deploy_server test:server_password decrypt_str(sign, service_password_test)server_host decrypt_str(sign, service_host_test)else:raise Exception(失败部署服务器标识有误)# 连接远程服务器ssh paramiko.SSHClient()ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())ssh.connect(server_host, usernameroot, passwordserver_password)return ssh# 查询进程 def query_process(ssh, process_name): process_id command fps -ef | grep {process_name}-system-master. | grep -v grepprocess_output execute_command(ssh, command)if process_output:# 提取进程ID并杀死进程process_id process_output.split( )[1]return process_id# 杀掉进程 def kill_process(ssh, process_id): command fkill -9 {process_id}output execute_command(ssh, command)return output# 寻找编译好的jar包 def find_jarname(output):match re.search(rBuilding jar: .?\/(.?\.jar), output)if match:jar_filepath match.group(1)jar_filename os.path.basename(jar_filepath)return jar_filenameelse:raise Exception(失败jar未找到)try:service_password_pro asdatrgsdservice_password_test sgherfhdfservice_host_pro jfhgfvdcfdtrservice_host_test jutyrbfvretdeploy_sign input(提示请填写部署密钥)deploy_sign check_deploy_sign(deploy_sign)# 部署环境deploy_server deploy_sign.split(-)[0]# 部署模块deploy_site deploy_sign.split(-)[1]# 部署环境对应服务正式的名字package_name production if deploy_server pro else stagingwith alive_bar(7, force_ttyTrue, title进度) as bar:# 连接服务器ssh connect_service(deploy_server)bar(0.1)print(完成-服务器连接成功)time.sleep(0.5)# 拉取代码shell ssh.invoke_shell()execute_command_shell(shell, cd /root/build/x-system,#)execute_command_shell(shell, git pull,#)bar(0.2)print(完成-git代码拉取成功)# 编译代码execute_command_shell(shell, cd /root/build/x-system/modules, #)execute_command_shell(shell, mvn clean install, BUILD SUCCESS)bar(0.4)print(完成-公共模块编译成功)# 打包代码execute_command_shell(shell, cd /root/build/x-system/webapps/ deploy_site -system , #)outputexecute_command_shell(shell, mvn clean package -P package_name, BUILD SUCCESS)bar(0.6)print(完成- deploy_site 模块打包成功)# 查询进程如果查不到 就不执行kill命令pid query_process(ssh, deploy_site)if pid ! :kill_process(ssh, pid)print(完成-旧程序进程已被杀掉等待启动)else:print(完成-旧程序PID未找到直接启动)bar(0.7)# 启动jarjar_name find_jarname(output)execute_command_shell(shell, cd /root/build/x-system/webapps/ deploy_site -system/target, #)execute_command_shell(shell, nohup java -jar jar_name log.out 21 , #)bar(0.8)print(完成-程序正在启动中...)# 查看日志确认服务启动成功log_path /var/log/x-system/ deploy_site -system if deploy_server pro else /var/log/x-system/ deploy_site -system-stagingexecute_command_shell(shell, cd log_path, #)execute_command_shell(shell, tail -200f deploy_site-system-info.log, TomcatWebServer:206 - Tomcat started on port(s))bar(1)print(完成-程序启动成功) except Exception as e:print(f异常: {str(e)})finally:time.sleep(10)# 关闭连接shell.close()ssh.close() 代码用try catch finally包裹如果过程中出现任何异常都输出错误原因 一些提示 每个人的项目服务器的路径都不同我只是提供个例子不可盲目复制运行每个人项目的名字也不同我在文中出现类似 manage和main是我项目模块中的名字只是个例子不可盲目复制 5.打包 打包命令 pyinstaller --onefile --icon 太空人.ico --add-data .\grapheme_break_property.json;grapheme\data --name 远程部署 deployment.py 打包命令中的几个参数解释一下 –onefile 将项目工程文件输出在同一个可执行文件中即exe中–icon 太空人.ico exe的图标是一个ico的图片–add-data “.\grapheme_break_property.json;grapheme\data” 打包时 grapheme_break_property这个依赖找不到导致打包失败就手动添加一下–name 远程部署 exe的名字注意不需要带.exe后缀deployment.py python工程的文件名 结语 python很好玩希望大家玩的开心 如果你对Python感兴趣想要学习python这里给大家分享一份Python全套学习资料都是我自己学习时整理的希望可以帮到你一起加油 有需要的小伙伴可以V扫描下方二维码免费领取 ​ 1️⃣零基础入门 ① 学习路线 对于从来没有接触过Python的同学我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线你可以按照上面的知识点去找对应的学习资源保证自己学得较为全面。 ② 路线对应学习视频 还有很多适合0基础入门的学习视频有了这些视频轻轻松松上手Python~ ③练习题 每节视频课后都有对应的练习题哦可以检验学习成果哈哈 2️⃣国内外Python书籍、文档 ① 文档和书籍资料 3️⃣Python工具包项目源码合集 ①Python工具包 学习Python常用的开发软件都在这里了每个都有详细的安装教程保证你可以安装成功哦 ②Python实战案例 光学理论是没用的要学会跟着一起敲代码动手实操才能将自己的所学运用到实际当中去这时候可以搞点实战案例来学习。100实战案例源码等你来拿 ③Python小游戏源码 如果觉得上面的实战案例有点枯燥可以试试自己用Python编写小游戏让你的学习过程中增添一点趣味 4️⃣Python面试题 我们学会了Python之后有了技能就可以出去找工作啦下面这些面试题是都来自阿里、腾讯、字节等一线互联网大厂并且有阿里大佬给出了权威的解答刷完这一套面试资料相信大家都能找到满意的工作。 上述所有资料 ⚡️ 朋友们如果有需要的可以扫描下方二维码免费领取 ​ 效果 起因 现在springboot项目的自动化部署已经非常普遍有用Jenkins的有用git钩子函数的有用docker的…等等。这段时间在玩python想着用python实现自动化部署即能锻炼下编码能力又方便运维。于是开始着手写了一个exe程序可直接在任何windows电脑上运行不具备python环境的windows电脑也可以运行。有兴趣的小伙伴可以跟着代码一起练一练噢写的详细一点对python新手也很友好。 实现步骤 开发准备 具有python基本环境和ide的windows或macOS电脑一台安装打包工具pip install pyinstaller一点小小的python基础 步骤 1. 导入依赖 新建一个py文件可以把它命名为 deployment.py名字随意哈什么名儿都可以然后把下面的库导入语句copy到此py文件中 import os #用于-提取文件名 import re #用于-正则表达式 import time #用于-线程休眠 import paramiko #用于-远程执行linux命令 from alive_progress import alive_bar #用于-进度条工具类 from cryptography.fernet import Fernet #用于-加解密代码 import base64 #用于-加解密代码 import hashlib #用于-加解密代码 在导入依赖的时候可能有些依赖咱们的电脑上之前没下载过不要紧只需要在pycharm中按 altenter就可以自动导入了PyCharm跟Idea的快捷键一模一样可以按Idea的习惯使用。而且在python中还不用配置maven或pom文件非常方便。 2. 输入校验 部署毕竟是件严谨的事情我们增加个部署密钥校验我的这个部署密钥承担了以下的功能 确保部署的安全性不是谁拿到这个exe程序都能运行的哼~傲娇密钥字符串用-分割开前面的区分环境后面的区分项目或模块。如果同学们不需要区分项目子模块就不需要搞这么复杂随便定义一个密钥就好了 import os #用于-提取文件名 import re #用于-正则表达式 import time #用于-线程休眠 import paramiko #用于-远程执行linux命令 from alive_progress import alive_bar #用于-进度条工具类 from cryptography.fernet import Fernet #用于-加解密代码 import base64 #用于-加解密代码 import hashlib #用于-加解密代码 #检查密钥格式 def check_deploy_sign(deploy_site): #确保密钥只能是以下4个之一才能继续往下操作否则无限循环输入 或 退出程序if deploy_site ! pro-main and deploy_site ! pro-manage and deploy_site ! test-main and deploy_site ! test-manage: #校验失败一直校验new_deploy_site input(错误请填写部署密钥) check_deploy_sign(new_deploy_site) #校验成功退出return deploy_site try: deploy_sign input(提示请填写部署密钥) deploy_sign check_deploy_sign(deploy_sign) # 部署环境 pro代表生成环境test代表测试环境deploy_server deploy_sign.split(-)[0] # 部署模块或项目 manage代表manage模块main代表main模块 deploy_site deploy_sign.split(-)[1] # 打包时的包名三目运算符package_name production if deploy_server pro else staging except Exception as e: print(f异常: {str(e)}) 上面的代码中 增加了全局的异常处理类似Java的try catch也定义了一些基本的变量。密钥是一串由短线连接的字符串短线前的代码用以区分环境短线后的代码用以区分模块或项目。另外上面代码中的package_name是打包时的包名即profiles.profile.id一般配置在springboot项目pom文件中的编辑模块类似下面这样: 3. 连接linux服务器 import os #用于-提取文件名 import re #用于-正则表达式 import time #用于-线程休眠 import paramiko #用于-远程执行linux命令 from alive_progress import alive_bar #用于-进度条工具类 from cryptography.fernet import Fernet #用于-加解密代码 import base64 #用于-加解密代码 import hashlib #用于-加解密代码 #检查密钥格式 def check_deploy_sign(deploy_site): #确保密钥只能是以下4个之一才能继续往下操作否则无限循环输入 或 退出程序if deploy_site ! pro-main and deploy_site ! pro-manage and deploy_site ! test-main and deploy_site ! test-manage: #校验失败一直校验new_deploy_site input(错误请填写部署密钥) check_deploy_sign(new_deploy_site) #校验成功退出return deploy_site # 连接服务器 def connect_service(deploy_server):server_password server_host sign hashlib.sha256(deploy_server.encode()).digest() sign base64.urlsafe_b64encode(sign) if deploy_server pro: server_password decrypt_str(sign, service_password_pro) server_host decrypt_str(sign, service_host_pro) elif deploy_server test: server_password decrypt_str(sign, service_password_test) server_host decrypt_str(sign, service_host_test) else: raise Exception(失败部署服务器标识有误) # 连接远程服务器 ssh paramiko.SSHClient() ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) ssh.connect(server_host, usernameroot, passwordserver_password) return ssh # 解密密码 def decrypt_str(key, encrypted_password): f Fernet(key) decrypted_password f.decrypt(encrypted_password).decode() return decrypted_passwordtry: # 服务器环境信息的加密字符串包含各服务器的 ip和密码 service_password_pro asdatrgsd service_password_test sgherfhdf service_host_pro jfhgfvdcfdtr service_host_test jutyrbfvretdeploy_sign input(提示请填写部署密钥) deploy_sign check_deploy_sign(deploy_sign) # 部署环境 pro代表生成环境test代表测试环境deploy_server deploy_sign.split(-)[0] # 部署模块或项目 manage代表manage模块main代表main模块 deploy_site deploy_sign.split(-)[1] # 打包时的包名三目运算符package_name production if deploy_server pro else staging #进度条with alive_bar(7, force_ttyTrue, title进度) as bar: # 连接服务器 ssh connect_service(deploy_server) bar(0.1) print(完成-服务器连接成功) time.sleep(0.5) except Exception as e: print(f异常: {str(e)}) 在连接服务器之前我们加个进度条显示方便查看部署到哪一步了要点讲解 with alive_bar 中放的事需要进度条显示的步骤connect_service是连接服务器的方法主机的ip和密码我们用加密的密文显示解密的密钥就是 手动输入的部署密钥当一段逻辑执行完成后通过bar(0.1)来显示进度条进度alive_bar的第一个参数就是步骤总数 4. 部署工具主逻辑 代码要点讲解 下面的代码是工程的全部代码主要包含了以下逻辑 连接服务器进入到项目工程目录拉取git代码编译公共依赖的代码有的项目不一定有公共模块可酌情删减编译打包程序代码杀死旧进程寻找编译好的程序jar包并启动检测启动结果 import os #用于-提取文件名 import re #用于-正则表达式 import time #用于-线程休眠 import paramiko #用于-远程执行linux命令 from alive_progress import alive_bar #用于-进度条工具类 from cryptography.fernet import Fernet #用于-加解密代码 import base64 #用于-加解密代码 import hashlib #用于-加解密代码def check_deploy_sign(deploy_site):if deploy_site ! pro-main and deploy_site ! pro-manage and deploy_site ! test-main and deploy_site ! test-manage:new_deploy_site input(错误请填写部署密钥)check_deploy_sign(new_deploy_site)return deploy_site# 解密密码 def decrypt_str(key, encrypted_password):f Fernet(key)decrypted_password f.decrypt(encrypted_password).decode()return decrypted_password# 执行远程命令 def execute_command(ssh, command):stdin, stdout, stderr ssh.exec_command(command)stdout.channel.recv_exit_status() # 等待命令执行完毕output stdout.read().decode(utf-8)time.sleep(0.5)return output# 执行远程命令 def execute_command_shell(shell, command, endword):shell.send(command \n)output while True:while shell.recv_ready():recv shell.recv(1024).decode(utf-8, errorsignore)output recvif endword # :if output.endswith($ ) or output.endswith(# ):breakelif endword in output:breaktime.sleep(0.5)return output# 连接服务器 def connect_service(deploy_server): server_password server_host sign hashlib.sha256(deploy_server.encode()).digest()sign base64.urlsafe_b64encode(sign)if deploy_server pro:server_password decrypt_str(sign, service_password_pro)server_host decrypt_str(sign, service_host_pro)elif deploy_server test:server_password decrypt_str(sign, service_password_test)server_host decrypt_str(sign, service_host_test)else:raise Exception(失败部署服务器标识有误)# 连接远程服务器ssh paramiko.SSHClient()ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())ssh.connect(server_host, usernameroot, passwordserver_password)return ssh# 查询进程 def query_process(ssh, process_name): process_id command fps -ef | grep {process_name}-system-master. | grep -v grepprocess_output execute_command(ssh, command)if process_output:# 提取进程ID并杀死进程process_id process_output.split( )[1]return process_id# 杀掉进程 def kill_process(ssh, process_id): command fkill -9 {process_id}output execute_command(ssh, command)return output# 寻找编译好的jar包 def find_jarname(output):match re.search(rBuilding jar: .?\/(.?\.jar), output)if match:jar_filepath match.group(1)jar_filename os.path.basename(jar_filepath)return jar_filenameelse:raise Exception(失败jar未找到)try:service_password_pro asdatrgsdservice_password_test sgherfhdfservice_host_pro jfhgfvdcfdtrservice_host_test jutyrbfvretdeploy_sign input(提示请填写部署密钥)deploy_sign check_deploy_sign(deploy_sign)# 部署环境deploy_server deploy_sign.split(-)[0]# 部署模块deploy_site deploy_sign.split(-)[1]# 部署环境对应服务正式的名字package_name production if deploy_server pro else stagingwith alive_bar(7, force_ttyTrue, title进度) as bar:# 连接服务器ssh connect_service(deploy_server)bar(0.1)print(完成-服务器连接成功)time.sleep(0.5)# 拉取代码shell ssh.invoke_shell()execute_command_shell(shell, cd /root/build/x-system,#)execute_command_shell(shell, git pull,#)bar(0.2)print(完成-git代码拉取成功)# 编译代码execute_command_shell(shell, cd /root/build/x-system/modules, #)execute_command_shell(shell, mvn clean install, BUILD SUCCESS)bar(0.4)print(完成-公共模块编译成功)# 打包代码execute_command_shell(shell, cd /root/build/x-system/webapps/ deploy_site -system , #)outputexecute_command_shell(shell, mvn clean package -P package_name, BUILD SUCCESS)bar(0.6)print(完成- deploy_site 模块打包成功)# 查询进程如果查不到 就不执行kill命令pid query_process(ssh, deploy_site)if pid ! :kill_process(ssh, pid)print(完成-旧程序进程已被杀掉等待启动)else:print(完成-旧程序PID未找到直接启动)bar(0.7)# 启动jarjar_name find_jarname(output)execute_command_shell(shell, cd /root/build/x-system/webapps/ deploy_site -system/target, #)execute_command_shell(shell, nohup java -jar jar_name log.out 21 , #)bar(0.8)print(完成-程序正在启动中...)# 查看日志确认服务启动成功log_path /var/log/x-system/ deploy_site -system if deploy_server pro else /var/log/x-system/ deploy_site -system-stagingexecute_command_shell(shell, cd log_path, #)execute_command_shell(shell, tail -200f deploy_site-system-info.log, TomcatWebServer:206 - Tomcat started on port(s))bar(1)print(完成-程序启动成功) except Exception as e:print(f异常: {str(e)})finally:time.sleep(10)# 关闭连接shell.close()ssh.close() 代码用try catch finally包裹如果过程中出现任何异常都输出错误原因 一些提示 每个人的项目服务器的路径都不同我只是提供个例子不可盲目复制运行每个人项目的名字也不同我在文中出现类似 manage和main是我项目模块中的名字只是个例子不可盲目复制 5.打包 打包命令 pyinstaller --onefile --icon 太空人.ico --add-data .\grapheme_break_property.json;grapheme\data --name 远程部署 deployment.py 打包命令中的几个参数解释一下 –onefile 将项目工程文件输出在同一个可执行文件中即exe中–icon 太空人.ico exe的图标是一个ico的图片–add-data “.\grapheme_break_property.json;grapheme\data” 打包时 grapheme_break_property这个依赖找不到导致打包失败就手动添加一下–name 远程部署 exe的名字注意不需要带.exe后缀deployment.py python工程的文件名 结语 python很好玩希望大家玩的开心 如果你对Python感兴趣想要学习python这里给大家分享一份Python全套学习资料都是我自己学习时整理的希望可以帮到你一起加油 有需要的小伙伴可以V扫描下方二维码免费领取 ​ 1️⃣零基础入门 ① 学习路线 对于从来没有接触过Python的同学我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线你可以按照上面的知识点去找对应的学习资源保证自己学得较为全面。 ② 路线对应学习视频 还有很多适合0基础入门的学习视频有了这些视频轻轻松松上手Python~ ③练习题 每节视频课后都有对应的练习题哦可以检验学习成果哈哈 2️⃣国内外Python书籍、文档 ① 文档和书籍资料 3️⃣Python工具包项目源码合集 ①Python工具包 学习Python常用的开发软件都在这里了每个都有详细的安装教程保证你可以安装成功哦 ②Python实战案例 光学理论是没用的要学会跟着一起敲代码动手实操才能将自己的所学运用到实际当中去这时候可以搞点实战案例来学习。100实战案例源码等你来拿 ③Python小游戏源码 如果觉得上面的实战案例有点枯燥可以试试自己用Python编写小游戏让你的学习过程中增添一点趣味 4️⃣Python面试题 我们学会了Python之后有了技能就可以出去找工作啦下面这些面试题是都来自阿里、腾讯、字节等一线互联网大厂并且有阿里大佬给出了权威的解答刷完这一套面试资料相信大家都能找到满意的工作。 上述所有资料 ⚡️ 朋友们如果有需要的可以扫描下方二维码免费领取 ​
http://www.zqtcl.cn/news/933740/

相关文章:

  • 表白网页制作免费网站制作西安网站快速优化
  • 如何破解网站后台管理做网站前端用什么软件好
  • 网站建设业务客户来源建德建设局官方网站
  • 网站设计 网站开发 优化网页设计一般尺寸
  • 好的版式设计网站网站建设商标属于哪个类别
  • 做淘宝素材网站哪个好用中国广告公司100强
  • 海拉尔网站建设平台wordpress的插件下载地址
  • 企业服务类网站常用python编程软件
  • 有哪些漫画做的好的网站西安seo建站
  • 在建设部网站如何查询注册信息网站开发项目的前端后端数据库
  • 自助建站网站seo公司wordpress 相册 免费模板
  • 搜索建站网在线crm管理系统
  • 旅游网站管理系统源码wordpress 禁止爬虫
  • 会员登录系统网站建设wordpress 二级页面
  • 北京网站建设公司代理记账代理公司注册
  • 网站建设需要提供的资料物流企业网站建设与管理规划书
  • .net 手机网站开发wordpress下载链接框
  • 省直部门门户网站建设网站视频点播怎么做
  • 广西网站建设-好发信息网做信息图的网站
  • 网站建设费用怎么算遵义市住房和城乡建设局官方网站
  • 网站部分网页乱码手把手教建设网站
  • 电商网站开发目的举报网站建设运行情况
  • 网站专业设计在线科技成都网站推广公司
  • 怎么建设幸运28网站seo工作是什么意思
  • 人工智能和网站开发如何做网站栏目
  • 设计有什么网站推荐ppt大全免费模板
  • 建站点wordpress百度云
  • 微信朋友圈的网站连接怎么做公众号小程序制作步骤
  • 做移动互联网站点网站建设完工确认书
  • 网站建设英语翻译资料潼南国外免费自助建站