Publish a Component

将您的Streamlit组件发布到PyPI可以让世界各地的Python用户轻松访问。此步骤完全是可选的,因此如果您不打算公开发布您的组件,可以跳过此部分!

push_pin

注意

对于静态Streamlit组件,将Python包发布到PyPI的步骤与核心PyPI打包说明相同。静态组件可能只包含Python代码,因此一旦你正确设置了setup.py文件并生成了分发文件,你就可以上传到PyPI了。

Bi-directional Streamlit Components 至少包括Python和JavaScript代码,因此,在发布到PyPI之前需要做一些额外的准备工作。本页的其余部分将重点介绍双向组件的准备过程。

双向Streamlit组件与纯Python库略有不同,因为它必须包含预编译的前端代码。这也是基础Streamlit的工作方式;当你pip install streamlit时,你得到的是一个Python库,其中包含的HTML和前端代码已被编译成静态资源。

component-template GitHub 仓库提供了 PyPI 发布所需的文件夹结构。但在发布之前,您需要进行一些准备工作:

  1. 给你的组件命名,如果你还没有这样做

    • template/my_component/文件夹重命名为template/<组件名称>/
    • 将你的组件名称作为第一个参数传递给declare_component()
  2. 编辑 MANIFEST.in,将递归包含的路径从 package/frontend/build * 更改为 /frontend/build *

  3. 编辑 setup.py,添加你的组件名称和其他相关信息

  4. 创建前端代码的发布版本。这将添加一个新目录,frontend/build/,其中包含您编译的前端代码:

    cd frontend npm run build
  5. 将构建文件夹的路径作为path参数传递给declare_component。(如果您使用的是模板Python文件,可以在文件顶部设置_RELEASE = True):

    import streamlit.components.v1 as components # 更改这个: # component = components.declare_component("my_component", url="http://localhost:3001") # 改为这个: parent_dir = os.path.dirname(os.path.abspath(__file__)) build_dir = os.path.join(parent_dir, "frontend/build") component = components.declare_component("new_component_name", path=build_dir)

一旦你更改了默认的my_component引用,编译了HTML和JavaScript代码,并在components.declare_component()中设置了新的组件名称,你就可以准备构建一个Python wheel了:

  1. 确保你有最新版本的 setuptools、wheel 和 twine

  2. 从源代码创建一个wheel包:

    # 从你的组件的顶级目录运行此命令;也就是说, # 包含 `setup.py` 的目录 python setup.py sdist bdist_wheel

创建好你的wheel后,最后一步是上传到PyPI。这里的说明重点介绍了如何上传到Test PyPI,这样你就可以学习这个过程的操作,而不用担心搞砸任何事情。上传到PyPI遵循相同的基本步骤。

  1. 如果您还没有账户,请在Test PyPI上创建一个账户

  2. 将你的wheel上传到Test PyPI。twine会提示你输入用户名和密码。对于用户名,使用__token__。对于密码,使用你在上一步中获得的token值,包括pypi-前缀:

    python -m twine upload --repository testpypi dist/*
  3. 在一个新的Python项目中安装你刚刚上传的包,以确保它能正常工作:

    python -m pip install --index-url https://test.pypi.org/simple/ --no-deps example-pkg-YOUR-USERNAME-HERE

如果一切顺利,您可以按照https://packaging.python.org/tutorials/packaging-projects/#next-steps上的说明将您的库上传到PyPI。

恭喜,您已经创建了一个公开可用的Streamlit组件!

我们很乐意帮助您与Streamlit社区分享您的组件!要分享它:

  1. 如果您在GitHub上托管您的代码,请添加标签streamlit-component,以便它列在GitHub streamlit-component主题中:

    将streamlit-component标签添加到您的GitHub仓库

  2. 在Streamlit论坛的Show the Community!板块发帖。使用类似于“新组件:,一种实现X的新方法”的帖子标题。

  3. 将您的组件添加到社区组件跟踪器

  4. @streamlit上给我们发推文,这样我们可以帮你转发你的公告。

我们的组件库大约每月更新一次。遵循上述建议,以最大限度地提高您的组件进入我们组件库的可能性。我们文档中展示的社区组件是不定期手工挑选的。拥有许多星标和良好文档的流行组件更有可能被选中。

forum

还有问题吗?

我们的 论坛 充满了有用的信息和Streamlit专家。