Spaces:
Sleeping
Sleeping
| # 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() | |