将应用程序从 ROOT_LOCATION 迁移到 FROM

要转换 Streamlit 对象,请使用 CREATE OR REPLACE STREAMLIT 与 FROM 参数。为简单起见,此过程假设您将使用仓库运行时。如果要升级到容器运行时(预览版),则需要更改应用程序代码以实现兼容性。请参阅 在运行时环境之间迁移 页面。

如果应用程序代码与容器运行时兼容,您可以通过在 CREATE OR REPLACE STREAMLIT 命令中添加以下参数来修改此过程:

RUNTIME_NAME = 'SYSTEM$ST_CONTAINER_RUNTIME_PY3_11'
COMPUTE_POOL = my_compute_pool
EXTERNAL_ACCESS_INTEGRATIONS = (pypi_access_integration)
Copy

要将应用程序从 ROOT_LOCATION 迁移到 FROM,执行以下步骤:

  1. 要确定应用程序的当前配置,请运行以下命令:

    DESCRIBE STREAMLIT streamlit_db.streamlit_schema.my_app;
    
    Copy

    streamlit_db.streamlit_schema.my_app 替换为 Streamlit 对象。

  2. 为了在后续步骤中使用,请打开文本编辑器并记下以下值。显示示例值,以便您在后续步骤中识别并替换为您的值:

    name

    my_app

    title

    My Streamlit App

    root_location

    @db1.schema1/my_app_folder

    main_file

    streamlit_app.py

    query_warehouse

    my_warehouse

    user_packages

    streamlit==1.45.0, pandas==2.2.0

    import_urls

    @db2.schema2/packages/package1.zip, @db3.schema3/packages/package2.zip

    external_access_integration

    eai_name_1, eai_name_2

    external_access_secrets

    secret1, secret2

    如果您的 Streamlit 对象没有返回 root_location 列,说明您的应用程序是使用 FROM 参数创建,不需要转换。

  3. 确认入口点文件位于应用程序来源目录的根目录中。(如果要使用容器运行时,可以跳过此步骤。)

    入口点文件由上一步中的 main_file 值指定。要使用 FROM 创建应用程序,main_file 必须在来源目录的根目录中声明一个文件。如果入口点文件位于子目录中,则必须重新排列应用程序的文件并相应地更新应用程序的代码,然后再继续。

  4. 要转换应用程序,请使用 CREATE OR REPLACE STREAMLIT 与 FROM 参数。

    在最简单的情况下,您的应用程序可能具有 titleuser_packagesimport_urlsexternal_access_integrationexternal_access_secrets 的空值。在这种情况下,您可以运行以下命令,将占位符替换为应用程序的值:

    CREATE OR REPLACE STREAMLIT my_app
    FROM '@db1.schema1/my_app_folder'
    MAIN_FILE = 'streamlit_app.py'
    QUERY_WAREHOUSE = my_warehouse;
    
    Copy

    如果应用程序的任何可选参数具有非空值,请将它们包含在 CREATE OR REPLACE STREAMLIT 命令中。例如:

    CREATE OR REPLACE STREAMLIT my_app
    FROM '@db1.schema1/my_app_folder'
    MAIN_FILE = 'streamlit_app.py'
    TITLE = 'My Streamlit App'
    QUERY_WAREHOUSE = my_warehouse
    IMPORTS = ('@db2.schema2/packages/package1.zip', '@db3.schema3/packages/package2.zip')
    EXTERNAL_ACCESS_INTEGRATION = ('eai_name_1', 'eai_name_2')
    SECRETS = ('secret1', 'secret2');
    
    Copy
  5. 如果应用程序未加载,请确认依赖关系。

    有关依赖关系管理的更多信息,请参阅 管理 Streamlit 应用程序的依赖项

语言: 中文