VoucherVision / run_VoucherVision.py
phyloforfun's picture
Major update. Support for 15 LLMs, World Flora Online taxonomy validation, geolocation, 2 OCR methods, significant UI changes, stability improvements, consistent JSON parsing
ae215ea
raw
history blame
1.92 kB
import streamlit.web.cli as stcli
import os, sys, socket
# pip install protobuf==3.20.0
# pip install torch==1.13.1+cu117 torchvision==0.14.1+cu117 torchaudio==0.13.1 --extra-index-url https://download.pytorch.org/whl/cu117 nope
# pip install torch==2.1.0 torchvision==0.16.0 torchaudio==2.1.0 --index-url https://download.pytorch.org/whl/cu118
# pip install protobuf==3.20.0
def find_available_port(start_port, max_attempts=1000):
port = start_port
attempts = 0
while attempts < max_attempts:
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
try:
s.bind(("127.0.0.1", port))
# If successful, return the current port
return port
except socket.error:
# If the port is in use, increment the port number and try again
port += 1
attempts += 1
# Optional: Return None or raise an exception if no port is found within the attempts limit
raise ValueError(f"Could not find an available port within {max_attempts} attempts starting from port {start_port}.")
def resolve_path(path):
resolved_path = os.path.abspath(os.path.join(os.getcwd(), path))
return resolved_path
if __name__ == "__main__":
dir_home = os.path.dirname(__file__)
start_port = 8528
try:
free_port = find_available_port(start_port)
sys.argv = [
"streamlit",
"run",
resolve_path(os.path.join(os.path.dirname(__file__),"app.py")),
# resolve_path(os.path.join(dir_home,"vouchervision", "VoucherVision_GUI.py")),
"--global.developmentMode=false",
# "--server.port=8545",
f"--server.port={free_port}",
# Toggle below for HF vs Local
# "--is_hf=1",
# "--is_hf=0",
]
sys.exit(stcli.main())
except ValueError as e:
print(e)