简体   繁体   中英

Serverless Framework / Python for Lambda - packaging up local shared libraries

Python package novice here. I'm working in Python and using the serverless framework for stack config and deployment. I have a file structure like this:

libs/
  __init__.py
  mylib.py
services/
  service1/
    handler.py

handler.py needs to reference mylib.py, so it includes it:

from libs.mylib include MyLib

My virtual env is set up to add the project root to PYTHONPATH, so this works on my local dev, but libs/mylib.py doesn't get included when I package it up for Lambda. How do I tell serverless to include the libs file in the package?

I've tried including a relative path in my requirements.txt file from both the services/service1/ path and from the root path - both have resulted in an error like this:

  STDERR: ERROR: Invalid requirement: './libs' (from line 1 of /var/task/requirements.txt)
  Hint: It looks like a path. File './libs' does not exist.

I've also tried including libs without a path, and that just installs the pypi package.

I had a similar problem a couple of days. The serverless-python-requirements was excluding the lib directory because it was outside of the module configuration I set.

The solution for me was to move the requirements.txt into the root directory and set up the module configuration also to the root.

Could you post your serverless file?

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM