mirror of
https://github.com/HumanAIGC-Engineering/gradio-webrtc.git
synced 2026-02-04 17:39:23 +08:00
* 视觉更新 --------- Co-authored-by: 杍超 <huangbinchao.hbc@alibaba-inc.com> Co-authored-by: 款冬 <neil.xh@alibaba-inc.com>
70 lines
2.2 KiB
Python
70 lines
2.2 KiB
Python
import subprocess
|
||
import os
|
||
import glob
|
||
import shutil
|
||
import argparse
|
||
|
||
def check_node_installed():
|
||
try:
|
||
# 尝试运行 `node -v` 命令
|
||
subprocess.check_output(['node', '-v'])
|
||
print("Node.js is installed.")
|
||
return True
|
||
except subprocess.CalledProcessError:
|
||
print("Node.js is not installed or not found in PATH.")
|
||
return False
|
||
except FileNotFoundError:
|
||
print("Node.js is not installed or not found in PATH.")
|
||
return False
|
||
|
||
def install_wheel(whl_file, force_reinstall=True):
|
||
if force_reinstall:
|
||
subprocess.run(['pip', 'install', '--force-reinstall', whl_file])
|
||
print(f"Force reinstallation of {whl_file} successful.")
|
||
else:
|
||
subprocess.run(['pip', 'install', whl_file])
|
||
print(f"Installation of {whl_file} successful.")
|
||
|
||
def main():
|
||
# 获取当前脚本所在的目录
|
||
script_dir = os.path.dirname(os.path.abspath(__file__))
|
||
|
||
# 切换到当前脚本所在的目录
|
||
os.chdir(script_dir)
|
||
|
||
# 查找 dist 目录下的 .whl 文件
|
||
whl_files = glob.glob('dist/*.whl')
|
||
|
||
# 有node 且没有whl文件时,执行gradio cc install和gradio cc build
|
||
if (whl_files is None or len(whl_files)) == 0:
|
||
if not check_node_installed():
|
||
print ("need to build .whl, but nodejs not installed")
|
||
return
|
||
# 移除 gradio_webrtc 包
|
||
subprocess.run(['pip', 'uninstall', '-y', 'gradio_webrtc'])
|
||
|
||
# 删除已有的 dist 目录
|
||
if os.path.exists('dist'):
|
||
shutil.rmtree('dist')
|
||
|
||
# 执行 gradio cc install
|
||
subprocess.run(['gradio', 'cc', 'install'])
|
||
|
||
# 执行 gradio cc build --no-generate-docs
|
||
subprocess.run(['gradio', 'cc', 'build', '--no-generate-docs'])
|
||
|
||
# 查找 dist 目录下的 .whl 文件
|
||
whl_files = glob.glob('dist/*.whl')
|
||
if whl_files:
|
||
whl_file = whl_files[0]
|
||
# 安装 .whl 文件
|
||
install_wheel(whl_file, True)
|
||
else:
|
||
print("没有找到 .whl 文件")
|
||
|
||
if __name__ == "__main__":
|
||
# 解析命令行参数
|
||
parser = argparse.ArgumentParser(description="Update and install gradio-webrtc package.")
|
||
args = parser.parse_args()
|
||
|
||
main() |