* Initial plan * Add package structure and resource path utilities - Created langbot/ package with __init__.py and __main__.py entry point - Added paths utility to find frontend and resource files from package installation - Updated config loading to use resource paths - Updated frontend serving to use resource paths - Added MANIFEST.in for package data inclusion - Updated pyproject.toml with build system and entry points Co-authored-by: RockChinQ <45992437+RockChinQ@users.noreply.github.com> * Add PyPI publishing workflow and update license - Created GitHub Actions workflow to build frontend and publish to PyPI - Added license field to pyproject.toml to fix deprecation warning - Updated .gitignore to exclude build artifacts - Tested package building successfully Co-authored-by: RockChinQ <45992437+RockChinQ@users.noreply.github.com> * Add PyPI installation documentation - Created PYPI_INSTALLATION.md with detailed installation and usage instructions - Updated README.md to feature uvx/pip installation as recommended method - Updated README_EN.md with same changes for English documentation Co-authored-by: RockChinQ <45992437+RockChinQ@users.noreply.github.com> * Address code review feedback - Made package-data configuration more specific to langbot package only - Improved path detection with caching to avoid repeated file I/O - Removed sys.path searching which was incorrect for package data - Removed interactive input() call for non-interactive environment compatibility - Simplified error messages for version check Co-authored-by: RockChinQ <45992437+RockChinQ@users.noreply.github.com> * Fix code review issues - Use specific exception types instead of bare except - Fix misleading comments about directory levels - Remove redundant existence check before makedirs with exist_ok=True - Use context manager for file opening to ensure proper cleanup Co-authored-by: RockChinQ <45992437+RockChinQ@users.noreply.github.com> * Simplify package configuration and document behavioral differences - Removed redundant package-data configuration, relying on MANIFEST.in - Added documentation about behavioral differences between package and source installation - Clarified that include-package-data=true uses MANIFEST.in for data files Co-authored-by: RockChinQ <45992437+RockChinQ@users.noreply.github.com> * chore: update pyproject.toml * chore: try pack templates in langbot/ * chore: update * chore: update * chore: update * chore: update * chore: update * chore: adjust dir structure * chore: fix imports * fix: read default-pipeline-config.json * fix: read default-pipeline-config.json * fix: tests * ci: publish pypi * chore: bump version 4.6.0-beta.1 for testing * chore: add templates/** * fix: send adapters and requesters icons * chore: bump version 4.6.0b2 for testing * chore: add platform field for docker-compose.yaml --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: RockChinQ <45992437+RockChinQ@users.noreply.github.com> Co-authored-by: Junyan Qin <rockchinq@gmail.com>
3.0 KiB
LangBot PyPI Package Installation
Quick Start with uvx
The easiest way to run LangBot is using uvx (recommended for quick testing):
uvx langbot
This will automatically download and run the latest version of LangBot.
Install with pip/uv
You can also install LangBot as a regular Python package:
# Using pip
pip install langbot
# Using uv
uv pip install langbot
Then run it:
langbot
Or using Python module syntax:
python -m langbot
Installation with Frontend
When published to PyPI, the LangBot package includes the pre-built frontend files. You don't need to build the frontend separately.
Data Directory
When running LangBot as a package, it will create a data/ directory in your current working directory to store configuration, logs, and other runtime data. You can run LangBot from any directory, and it will set up its data directory there.
Command Line Options
LangBot supports the following command line options:
--standalone-runtime: Use standalone plugin runtime--debug: Enable debug mode
Example:
langbot --debug
Comparison with Other Installation Methods
PyPI Package (uvx/pip)
- Pros: Easy to install and update, no need to clone repository or build frontend
- Cons: Less flexible for development/customization
Docker
- Pros: Isolated environment, easy deployment
- Cons: Requires Docker
Manual Source Installation
- Pros: Full control, easy to customize and develop
- Cons: Requires building frontend, managing dependencies manually
Development
If you want to contribute or customize LangBot, you should still use the manual installation method by cloning the repository:
git clone https://github.com/langbot-app/LangBot
cd LangBot
uv sync
cd web
npm install
npm run build
cd ..
uv run main.py
Updating
To update to the latest version:
# With pip
pip install --upgrade langbot
# With uv
uv pip install --upgrade langbot
# With uvx (automatically uses latest)
uvx langbot
System Requirements
- Python 3.10.1 or higher
- Operating System: Linux, macOS, or Windows
Differences from Source Installation
When running LangBot from the PyPI package (via uvx or pip), there are a few behavioral differences compared to running from source:
-
Version Check: The package version does not prompt for user input when the Python version is incompatible. It simply prints an error message and exits. This makes it compatible with non-interactive environments like containers and CI/CD.
-
Working Directory: The package version does not require being run from the LangBot project root. You can run
langbotfrom any directory, and it will create adata/directory in your current working directory. -
Frontend Files: The frontend is pre-built and included in the package, so you don't need to run
npm buildseparately.
These differences are intentional to make the package more user-friendly and suitable for various deployment scenarios.