Organiser les fichiers d’application Streamlit¶
Lorsque vous déployez une application dans Streamlit in Snowflake, le fichier de point d’entrée de l’application peut avoir n’importe quel nom qui suit les conventions de dénomination standard des fichiers et peut être situé n’importe où dans le répertoire source de l’application. Le répertoire source de l’application peut contenir des fichiers supplémentaires, tels que des scripts de page, des modules Python, des fichiers média et des fichiers de configuration.
La racine du répertoire source de votre application est le répertoire de travail de Streamlit. Si vous développez et exécutez votre application localement, cela signifie que vous devez exécuter la commande streamlit run à partir de la racine de votre répertoire source pour veiller à ce que tous les chemins soient corrects.
Lorsque vous initialisez une application Streamlit à partir de Snowsight ou utilisez CREATE STREAMLIT sans spécifier d’emplacement source, la zone de préparation intégrée de l’objet Streamlit contient un fichier de point d’entrée dans sa racine. Vous pouvez utiliser l’explorateur de fichiers pour ajouter des fichiers supplémentaires. Si vous devez renommer ou déplacer votre fichier de point d’entrée, vous devez utiliser les commandes SQL pour mettre à jour la valeur MAIN_FILE de votre objet Streamlit.
Note
Si vous utilisez la commande CREATE STREAMLIT avec le paramètre ROOT_LOCATION, votre application peut uniquement utiliser un environnement d’entrepôt et est soumise à des limitations supplémentaires. Cette page couvre les applications créées avec le paramètre FROM. Pour plus d’informations, voir Comprendre les différents types d’objets Streamlit.
Structure des fichiers de l’environnement d’exécution de conteneur¶
Lorsque vous utilisez un environnement d’exécution de conteneur, votre fichier de point d’entrée peut avoir n’importe quel nom qui suit les conventions de dénomination standard des fichiers et peut être situé n’importe où dans votre répertoire source. Cependant, avec l’introduction de st.navigation dans Streamlit v1.36, la pratique la plus courante est d’utiliser streamlit_app.py comme fichier de point d’entrée, car les noms des pages ne doivent pas être déduits des noms des fichiers.
Snowflake exécute la commande streamlit run à partir de la racine du répertoire source, vous devez donc gérer les chemins en conséquence.
Votre fichier de point d’entrée peut porter n’importe quel nom et se trouver n’importe où dans votre répertoire source.
Vos fichiers de dépendances peuvent se trouver dans n’importe quel répertoire compris entre la racine de votre répertoire source et le répertoire contenant votre fichier de point d’entrée. Pour plus d’informations, voir Gérer les dépendances de votre application Streamlit.
Vos répertoires
.streamlit/peuvent se trouver entre la racine de votre répertoire source et le répertoire contenant votre fichier de point d’entrée.La racine de votre répertoire source est le répertoire de travail de Streamlit.
La structure de répertoire suivante est valable pour une application Streamlit d’environnement d’exécution de conteneur :
source_directory/
├── .streamlit/ # Optional configuration
│ ├── config.toml
│ └── secrets.toml
├── page_1.py # Page 1
├── page_2.py # Page 2
├── pyproject.toml # Python dependencies
├── streamlit_app.py # Entrypoint file
└── uv.lock # Auto-generated lockfile
La structure des répertoires suivante présente deux applications dans un seul répertoire source, chacune avec son propre fichier de point d’entrée et ses propres dépendances. Dans cet exemple, deux objets Streamlit différents existent. Les deux objets Streamlit définissent FROM sur l’emplacement représenté par source_directory, mais chaque objet définit MAIN_FILE sur un autre fichier streamlit_app.py. La première application utilise un fichier pyproject.toml pour les dépendances, tandis que la deuxième application utilise un fichier requirements.txt.
source_directory/
├── .streamlit/ # Shared configuration
│ ├── config.toml
│ └── secrets.toml
├── app_one/ # First app source directory
│ ├── .streamlit/ # Overriding first-app configuration
│ │ ├── config.toml
│ │ └── secrets.toml
│ ├── page_1.py
│ ├── page_2.py
│ ├── pyproject.toml # Python dependencies for first app
│ ├── streamlit_app.py # Entrypoint file for first app
│ └── uv.lock
├── app_two/ # Second app source directory
│ ├── requirements.txt # Python dependencies for second app
│ ├── page_1.py
│ ├── page_2.py
│ ├── streamlit_app.py # Entrypoint file for second app
│ └── uv.lock
└── utils/ # Shared modules
└── helper.py
Important
Certaines fonctionnalités de Streamlit nécessitent des chemins relatifs au répertoire de travail tandis que d’autres nécessitent des chemins relatifs au fichier de point d’entrée.
En règle générale, les chemins vers les images et autres médias de votre application doivent être relatifs au répertoire de travail (la racine de votre répertoire source). Toutefois, les chemins vers les autres pages d’une application de plusieurs pages sont relatifs à l’emplacement du fichier de point d’entrée.
Pour éviter toute confusion, pensez à organiser les fichiers de votre application de manière à ce que le fichier de point d’entrée se trouve à la racine de votre répertoire source. Vous pouvez enregistrer plusieurs applications dans un dépôt Git et transmettre un sous-répertoire au paramètre FROM lorsque vous créez l’objet Streamlit. Ce sous-répertoire est alors le répertoire source de votre application. Dans l’exemple précédent, cela signifie d’utiliser source_directory/app_one et source_directory/app_two dans le paramètre FROM. Mais dans ce cas, les applications perdent l’accès aux modules partagés dans source_directory/utils.
Structure des fichiers de l’environnement d’exécution d’entrepôt¶
Lorsque vous utilisez un environnement d’exécution d’entrepôt, votre fichier de point d’entrée peut avoir n’importe quel nom, mais il doit être situé à la racine de votre répertoire source. Votre version de Python et vos dépendances sont spécifiées dans un fichier environment.yml à la racine de votre répertoire source. Si vous n’incluez pas de fichier environment.yml, votre application s’exécutera sur la dernière version de Python et la dernière version de Streamlit qui sont actuellement prises en charge dans Streamlit in Snowflake. Si vous utilisez le sélecteur de paquets dans Snowsight pour ajouter des paquets, le fichier environment.yml est automatiquement mis à jour ou créé.
La structure de répertoire suivante est valable pour une application Streamlit d’environnement d’exécution d’entrepôt :
source_directory/
├── .streamlit/ # Optional configuration
│ └── config.toml
├── environment.yml # Conda dependencies
├── page_1.py
├── page_2.py
└── streamlit_app.py # Entrypoint file
Importation de modules et de fichiers à partir d’autres zones de préparation¶
Les commandes CREATE STREAMLIT et ALTER STREAMLIT prennent en charge le paramètre IMPORTS, qui vous permet d’importer des fichiers supplémentaires provenant d’autres zones de préparation dans le répertoire source de votre application. Si vous souhaitez partager un ensemble de modules ou de fichiers communs que vous souhaitez partager entre plusieurs applications, vous pouvez les stocker dans une zone de préparation et les importer dans chaque application à l’aide du paramètre IMPORTS. Cependant, cela n’est pris en charge que pour les applications utilisant un environnement d’exécution d’entrepôt.
Applications de plusieurs pages¶
Streamlit prend en charge deux méthodes de création d’applications de plusieurs pages :
Utilisation de
st.navigation: Vous pouvez utiliser la commandest.navigationpour créer une structure de navigation personnalisée dans votre application. Cela vous permet de définir des pages de manière programmatique et de contrôler le flux de navigation. Le fichier de point d’entrée agit comme un routeur de pages et les pages de votre application peuvent être définies en tant que fonctions ou de scripts Python n’importe où dans votre répertoire source. Il s’agit de la méthode recommandée pour créer des applications de plusieurs pages, car elle offre la plus grande flexibilité.Utilisation d’un répertoire
pages/: Vous pouvez créer un répertoire nommépages/à côté du fichier de point d’entrée de votre application. Le fichier de point d’entrée est traité comme la page d’accueil de votre application. Chaque fichier Python dans le répertoirepages/est traité comme une page supplémentaire dans l’application. Les noms de page sont dérivés des noms de fichiers.
Vous ne pouvez pas mélanger les deux méthodes pour créer des applications de plusieurs pages. Pour plus d’informations sur les applications de plusieurs pages, voir Vue d’ensemble des applications de plusieurs pages dans la documentation Streamlit.
Note
Lorsque vous hébergez des applications multipages dans Streamlit in Snowflake, les noms de chemin d’URL sont préfixés avec /!. Par exemple, si le chemin relatif d’une page est /page2 dans une application multipage, son chemin relatif dans Streamlit in Snowflake devient /!/page2 comme le montre l’URL suivante : https://app.snowflake.com/org/account_name/#/streamlit-apps/DB.SCHEMA.APP_NAME/!/page_2
Mettre à jour le fichier de point d’entrée¶
Si vous renommez ou déplacez votre fichier de point d’entrée, vous devez utiliser les commandes SQL pour mettre à jour votre objet Streamlit afin d’utiliser le nouveau fichier de point d’entrée. Vous devez utiliser un environnement d’exécution de conteneur si vous déplacez votre fichier de point d’entrée vers un sous-répertoire.
Utilisez la commande ALTER STREAMLIT pour modifier le paramètre MAIN_FILE de votre objet Streamlit, comme indiqué dans l’exemple suivant :
ALTER STREAMLIT my_streamlit_app SET MAIN_FILE = 'subdir/new_entrypoint.py';
Cet exemple change le fichier de point d’entrée de l’objet Streamlit
my_streamlit_appet le remplace parsubdir/new_entrypoint.py.