Jupyterlab / app.py
zyxciss's picture
Update app.py
ea72295 verified
# run_jupyterlab.py
import subprocess
import sys
import os
import signal # For handling termination signals
def launch_jupyterlab():
"""Launches JupyterLab programmatically on port 7860 and waits for it to finish."""
print("Attempting to launch JupyterLab on port 7860...")
command = [
sys.executable,
"-m",
"jupyterlab",
"--no-browser", # Remove this line if you want it to open automatically in your browser
"--port",
"7860",
"--ip=0.0.0.0" # IMPORTANT: Make sure it listens on all interfaces inside the container
]
# Optional: Uncomment and modify if you want to specify a working directory
# command.extend(["--notebook-dir", "/path/to/your/notebooks"])
try:
print(f"Executing command: {' '.join(command)}")
# Use subprocess.Popen to run the command
process = subprocess.Popen(command)
print("\nJupyterLab launched! Check your terminal for the URL.")
print("You should see a URL like 'http://localhost:7860/lab?token=...'")
print("Copy and paste this URL into your web browser to access JupyterLab.")
print("Keep this terminal window open (or container running) while you are using JupyterLab.")
# --- IMPORTANT CHANGE HERE ---
# Wait for the JupyterLab process to terminate.
# This keeps the Python script (and thus the container's main process) alive.
print("\nWaiting for JupyterLab process to terminate...")
process.wait()
print("JupyterLab process terminated.")
except FileNotFoundError:
print("Error: 'jupyterlab' command not found.")
print("Please ensure JupyterLab is installed. You can install it with:")
print("pip install jupyterlab")
except Exception as e:
print(f"An error occurred while launching JupyterLab: {e}")
if __name__ == "__main__":
launch_jupyterlab()