Skip to main content
  • Reuse existing code: Leverage your existing Python modules and libraries
  • Organize your codebase: Split your application logic into multiple files for better maintainability
  • Use external dependencies: Integrate with third-party packages or libraries not included in the base environment
  • Share code across projects: Import common utilities or models from shared repositories
fal provides several ways to handle Python module imports depending on your use case, from simple local modules to complex external repositories with specific dependencies.

Requirements

class MyApp(fal.App):
    requirements = ["mymodule"]

    @fal.endpoint("/")
    def predict(self, input: MyInput) -> MyOutput:
        myfunction(input)
        ...

Local Python Modules

You can import local Python modules by adding them to the local_python_modules attribute of your fal application.
from mymodule import myfunction

class MyApp(fal.App):
    local_python_modules = ["mymodule"]

    @fal.endpoint("/")
    def predict(self, input: MyInput) -> MyOutput:
        myfunction(input)
        ...

Git Repositories

You can clone Git repositories directly into your fal application using the clone_repository function. This is particularly useful for incorporating external libraries, model implementations, or shared code from Git repositories.
from fal.toolkit import clone_repository


class MyApp(fal.App):
    def setup(self):
        path = clone_repository(
            "https://github.com/myorg/myrepo",
            commit_hash="1418c53bcfaf4efc1034207dcb39d093d5fff645",
            # Add repository path to PYTHONPATH to allow importing modules
            include_to_path=True,
        )

        import myproject
        ...
I