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