Skip to content
Dashboard

Import Code

When building serverless applications with fal, you may need to import and use custom Python modules, third-party packages, or code from external repositories. This is common when you want to:

  • 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
...