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

佛山制作网站软件汕头网站制作开发

佛山制作网站软件,汕头网站制作开发,网址大全是什么,91文章目录 参考文章目录结构步骤安装venv查看python版本创建虚拟环境激活虚拟环境运行我们程序看缺少哪些依赖库#xff0c;依次安装它们接下来我们配置python程序启动脚本#xff0c;脚本中启动python程序前需先激活虚拟环境配置.service文件然后执行部署脚本#xff0c;成功… 文章目录 参考文章目录结构步骤安装venv查看python版本创建虚拟环境激活虚拟环境运行我们程序看缺少哪些依赖库依次安装它们接下来我们配置python程序启动脚本脚本中启动python程序前需先激活虚拟环境配置.service文件然后执行部署脚本成功了但是又莫名其妙搞出来一个问题后面一直不能复现后来又好了一直无法复现考虑问题复现时使用备用方案反正现在是正常的 20230811 虚拟环境中搞jtopjetson-stats还是有亿点问题 参考文章 Python虚拟环境使用教程以虚拟环境管理工具venv为例virtualenv、venv、pyenv、virtualenvwrapper、conda不同管理工具对比 目录结构 步骤 安装venv 它会基于当前版本的python3来安装python3-venv apt update apt install python3.8-venv查看python版本 执行python 创建虚拟环境 进入项目目录执行 python3 -m venv .venv-python3.8我把每个项目虚拟环境固定取名为.venv-python3.8后续方便脚本操作 20230813改了不这么搞了容易混淆每个虚拟环境都应该有自己特定的名字 python3 -m venv .venv-python3.8-ky_ai_ip_change可以看到生成了目录.venv-python3.8 我这刚生成的虚拟环境占空间也不大才7兆多 激活虚拟环境 source .venv-python3.8/bin/activate运行我们程序看缺少哪些依赖库依次安装它们 执行 python3 ip_change发现少了ping3装上 pip install ping3反复执行 python3 ip_change缺少啥库就装啥库 下载太慢我换成清华源怎么还给我卡住了 pip install -i https://pypi.tuna.tsinghua.edu.cn/simple gevent20230813如果有requirements.txt文件可以直接 pip install -i https://pypi.tuna.tsinghua.edu.cn/simple -r requirements.txt可以禁用缓存因为缓存可能会导致大问题比如缓存里有但是是用之前正确的方式下载的当前下载方式不正确但用缓存也成功了就会导致下载者误判 pip install --no-cache-dir -i https://pypi.tuna.tsinghua.edu.cn/simple -r requirements.txt第二天看好了 继续 可以了跑起来了接口也能调通 接下来我们配置python程序启动脚本脚本中启动python程序前需先激活虚拟环境 注意journalctl -u servicename没有及时打印python日志的原因是因为在systemd unit文件中执行shell脚本脚本中再执行python命令命令没加-u参数导致的。估计是systemd自动把shell脚本输出重定向到journalctl日志跟我们之前遇到的问题一样 ky_ai_ip_change.sh #!/bin/bash# 打印所有包括注释 # set -v # 打印执行命令 # set -x # 命令出错退出 set -e # 使用未初始化变量退出 set -uUSERroot# --------------------------------------------------------------------------# 检查是否是root WHO$(whoami | grep ${USER}$) if [ -z ${WHO} ]; thenechoecho Please change to \${USER}\ user mode first!echoexit 1 fi# --------------------------------------------------------------------------# 获取脚本所在路径 SCRIPT_LOCATION$(cd $(dirname $0) || {echo cd Failureexit 1}pwd ) echo SCRIPT_LOCATION $SCRIPT_LOCATION# --------------------------------------------------------------------------VENV_NAME.venv-python3.8 PYTHON_ENTRY_FILEip_change# --------------------------------------------------------------------------# 激活虚拟环境 # 加指令注释消除shellcheck警告source后有变量就会警告 # shellcheck source/ky/tml/ky_ai_ip_change/.venv-python3.8/bin/activate source $SCRIPT_LOCATION/$VENV_NAME/bin/activate if [ $? -ne 0 ]; thenecho Execute [source $SCRIPT_LOCATION/$VENV_NAME/bin/activate] failedexit 1 fi# 运行项目 # python -u $SCRIPT_LOCATION/$PYTHON_ENTRY_FILE # if [ $? -ne 0 ]; then # echo Execute [python $SCRIPT_LOCATION/$PYTHON_ENTRY_FILE] failed # exit 1 # fi# 改一改避免命令报错直接退出脚本没有机会退出虚拟环境 if python -u $SCRIPT_LOCATION/$PYTHON_ENTRY_FILE; thenecho 命令 [python -u $SCRIPT_LOCATION/$PYTHON_ENTRY_FILE] 执行成功 elseecho 命令 [python -u $SCRIPT_LOCATION/$PYTHON_ENTRY_FILE] 执行失败 fideactivate if [ $? -ne 0 ]; thenecho Execute [deactivate] failed退出虚拟环境失败exit 1 fi echo Execute [deactivate] successfully退出虚拟环境成功 配置.service文件 ky_ai_ip_change.service [Unit] Descriptionky_ai_ip_change Afternetwork.target[Service] ExecStart/ky/tml/ky_ai_ip_change/ky_ai_ip_change.sh WorkingDirectory/ky/tml/ky_ai_ip_change Restartalways RestartSec3[Install] WantedBydefault.target然后执行部署脚本成功了 install.sh #!/bin/bash# 打印所有包括注释 # set -v # 打印执行命令 # set -x # 命令出错退出 set -e # 使用未初始化变量退出 set -uUSERroot # USER_HOME/root# --------------------------------------------------------------------------# 检查是否是root WHO$(whoami | grep ${USER}$) if [ -z ${WHO} ]; thenechoecho Please change to \${USER}\ user mode first!echoexit 1 fi# --------------------------------------------------------------------------# 获取脚本所在路径 SCRIPT_LOCATION$(cd $(dirname $0) || {echo cd Failureexit 1}pwd ) # echo SCRIPT_LOCATION $SCRIPT_LOCATION chmod 777 ${SCRIPT_LOCATION} -R# --------------------------------------------------------------------------# 不同服务只用改 SERVICE_NAME 变量即可 SERVICE_NAMEky_ai_ip_change SERVICE_FILE_NAME$SERVICE_NAME.serviceSERVICE_SOURCE_FILE_PATH$SCRIPT_LOCATION/$SERVICE_FILE_NAME# 不能在 /etc/systemd/system 中创建子目录吗貌似是的测试很多次都不行 # SERVICE_TARGET_DIR_NAMEky_ai_service # SERVICE_TARGET_DIR_PATH/etc/systemd/system/$SERVICE_TARGET_DIR_NAME SERVICE_TARGET_DIR_PATH/etc/systemd/system# --------------------------------------------------------------------------# 创建目标目录 # if [ ! -d $SERVICE_TARGET_DIR_PATH ]; then # mkdir -p $SERVICE_TARGET_DIR_PATH # echo 创建目录[$SERVICE_TARGET_DIR_PATH] # else # echo 目录已存在不重新创建[$SERVICE_TARGET_DIR_PATH] # fi # chmod 777 $SERVICE_TARGET_DIR_PATH -R# --------------------------------------------------------------------------# 判断服务是否存在 if systemctl list-unit-files --typeservice | grep -q $SERVICE_NAME; thenecho $SERVICE_NAME.service exists# 打印服务状态# systemctl status $SERVICE_NAMEecho# 这句明明是打印居然会触发 set -e 报错退出加上 || true# systemctl status $SERVICE_NAME || true# 貌似信息比较长时会有分页等待用户输入阻塞程序加上 --no-pager 选项systemctl status $SERVICE_NAME --no-pager || trueecho# 询问用户是否删除read -p Do you want to delete $SERVICE_NAME.service? (y/n): choiceif [[ $choice y || $choice Y ]]; then# 删除服务systemctl stop $SERVICE_NAMEecho 已 stop [$SERVICE_NAME] 服务 systemctl disable $SERVICE_NAMEecho 已 disable [$SERVICE_NAME] 服务# rm /etc/systemd/system/$SERVICE_NAME.service # 不用删会自动删的systemctl daemon-reloadecho 已 daemon-reloadecho $SERVICE_NAME.service has been deletedelseecho Exiting scriptexit 0fi elseecho $SERVICE_NAME.service not exists fi echo# --------------------------------------------------------------------------# 这句明明是打印居然会触发 set -e 报错退出 # systemctl list-unit-files | grep $SERVICE_NAME # systemctl list-unit-files | grep $SERVICE_NAME || true# --------------------------------------------------------------------------# Function: create_symlink # Description: Check if a symlink exists and is valid. If it is valid, prompt the user to delete and relink it. # If it is invalid, display an error message. If it does not exist, create a new symlink. # Parameters: # $1 - The target path of the symlink # $2 - The path of the symlink # Returns: # Nonefunction create_symlink() {SRC$1LINK$2if [ -e $LINK ]; thenif [ -L $LINK ]; thenecho The symlink $LINK is valid.read -p Do you want to delete and relink it? (y/n) choicecase $choice iny | Y)rm $LINKecho The symlink $LINK has been deleted.;;*)return 0;;esacelseecho The symlink $LINK is invalid.fifiecho Force create soft link: [$LINK - $SRC]ln -sf $SRC $LINKif [ $? -ne 0 ]; thenecho Force create soft link: [$LINK - $SRC] failedexit 1fils -l --colorauto $LINK }# --------------------------------------------------------------------------# 判断软链接/usr/local/bin/node是否存在如果存在判断软链接是否有效如果有效询问用户是否删除如果用户选择是则删除此软链接并重新创建 SERVICE_TARGET_FILE_PATH$SERVICE_TARGET_DIR_PATH/$SERVICE_FILE_NAME # ls -l --colorauto $NODE_LINK create_symlink $SERVICE_SOURCE_FILE_PATH $SERVICE_TARGET_FILE_PATH echo# --------------------------------------------------------------------------# 通知systemd重新加载配置文件 systemctl daemon-reload if [ $? -ne 0 ]; thenecho Systemctl daemon-reload failedexit 1 fi echo Daemon-reload successfully# 启用服务 systemctl enable $SERVICE_NAME if [ $? -ne 0 ]; thenecho Enable service [$SERVICE_NAME] failedexit 1 fi echo Enable service [$SERVICE_NAME] successfully# 启动服务 systemctl start $SERVICE_NAME if [ $? -ne 0 ]; thenecho Start service [$SERVICE_NAME] failedexit 1 fi echo Start service [$SERVICE_NAME] successfully# --------------------------------------------------------------------------echo # systemctl status $SERVICE_NAME || true # 貌似信息比较长时会有分页等待用户输入阻塞程序加上 --no-pager 选项 systemctl status $SERVICE_NAME --no-pager || true# --------------------------------------------------------------------------echo echo Service [$SERVICE_FILE_NAME] install successfully echo 但是又莫名其妙搞出来一个问题后面一直不能复现后来又好了一直无法复现考虑问题复现时使用备用方案 参考文章Current command vanished from the unit file, execution of the command list won‘t be resumed. 后面如果又碰到可以考虑直接systemd unit文件中直接执行python指令而不是脚本同时定义ExecStartPre和ExecStopPost执行指令前的激活虚拟环境和退出虚拟环境的操作 如果使用systemd来执行Python服务可以在service配置文件中设置ExecStartPre和ExecStopPost来在执行前进入虚拟环境执行后退出虚拟环境。 以下是一个示例的service配置文件展示了如何在执行前进入虚拟环境执行后退出虚拟环境 [Unit] DescriptionMy Python Service[Service] ExecStartPre/bin/bash -c source /path/to/venv/bin/activate ExecStart/path/to/python /path/to/script.py ExecStopPost/bin/bash -c deactivate[Install] WantedBymulti-user.target在这个示例中ExecStartPre指定了在执行前要执行的命令即进入虚拟环境的命令source /path/to/venv/bin/activate。ExecStart指定了要执行的Python脚本的路径。ExecStopPost指定了在执行后要执行的命令即退出虚拟环境的命令deactivate。 请将/path/to/venv替换为你的虚拟环境的路径将/path/to/python替换为你的Python解释器的路径将/path/to/script.py替换为你的Python脚本的路径。 通过这样的配置当你启动或停止该service时会自动进入和退出虚拟环境。 反正现在是正常的 20230811 虚拟环境中搞jtopjetson-stats还是有亿点问题 pip3 install -U jetson-stats
http://www.hkea.cn/news/14299515/

相关文章:

  • 网站开发及服务合同下列关于网站开发中网页额
  • 网站上线要多久深圳营销型网站建设公司网络服务
  • 东莞网站建设营销网站关键字排名查询工具
  • 网站模板设计师要求昆明有多少做网站的公司
  • 网站用品哪里进货好seo分析案例
  • flash网站建设教程wordpress分享获得优惠
  • 漳州市住房建设局网站郴州网站网站建设
  • 网站建设有什么服务推荐wordpress主题xiu
  • 如何在各大网站发布信息中山网上房地产
  • 静态网站如何做自适应移动端湖北省建筑信息平台
  • 郑州企业如何建网站公司网站建设项目详情
  • 渝北网站制作搭建网站需要什么语言
  • 计算机机应用网站建设与维护电商自学网
  • 建设明星网站的目的高校信息化建设网站系统微信
  • 响应式相册网站模板企业管理软件系统
  • 开篇网站推广深圳百度总部
  • 无锡百度竞价推广学习网站建设优化
  • 网站收录平台方法哪些做直播卖食品的网站有哪些
  • 三明网站seo汉化wordpress插件
  • 网站怎么做可以合法让别人充钱可以生成静态网站源码
  • 校园网站建设 方案论证深圳公司网站建设服务为先
  • 视频网站开发的论文响应式网站开发现状
  • 网站登录密码忘记了怎么办网站建站合同
  • 网站模板建设二级目录现在有人还做网站吗
  • 国通快速建站给公司网站做seo
  • 网站虚拟服务器宁波网络公司做网站
  • 济宁建站公司建网站能赚钱吗赚多少
  • 网站建设 流程高端网站设计制作
  • 网站开发外文参考文献上海个人网站制作公司
  • 自己做的工艺品在哪个网站上可以卖织梦网站地图生成