serverless-python-requirements: Poetry: missing .serverless/requirements.txt

Using poetry, normal pyproject.toml file and poetry.lock. Version 5.1.0. sls package gives me:

Serverless: Invoke package
Serverless: Invoke aws:common:validate
Serverless: Invoke aws:common:cleanupTempDir
 
  Error --------------------------------------------------
 
  Error: ENOENT: no such file or directory, open '/Users/cyber/dev/jb/project/.serverless/requirements.txt'
      at Object.openSync (fs.js:439:3)
      at Object.readFileSync (fs.js:344:35)
      at getRequirements (/Users/cyber/dev/jb/project/node_modules/serverless-python-requirements/lib/pip.js:354:6)
      at filterRequirementsFile (/Users/cyber/dev/jb/project/node_modules/serverless-python-requirements/lib/pip.js:381:24)
      at generateRequirementsFile (/Users/cyber/dev/jb/project/node_modules/serverless-python-requirements/lib/pip.js:67:5)
      at installRequirementsIfNeeded (/Users/cyber/dev/jb/project/node_modules/serverless-python-requirements/lib/pip.js:501:3)
      at ServerlessPythonRequirements.installAllRequirements (/Users/cyber/dev/jb/project/node_modules/serverless-python-requirements/lib/pip.js:635:29)
  From previous event:
      at PluginManager.invoke (/Users/cyber/.nvm/versions/node/v10.14.2/lib/node_modules/serverless/lib/classes/PluginManager.js:490:22)
      at getHooks.reduce.then (/Users/cyber/.nvm/versions/node/v10.14.2/lib/node_modules/serverless/lib/classes/PluginManager.js:525:24)
  From previous event:
      at PluginManager.run (/Users/cyber/.nvm/versions/node/v10.14.2/lib/node_modules/serverless/lib/classes/PluginManager.js:525:8)
      at variables.populateService.then (/Users/cyber/.nvm/versions/node/v10.14.2/lib/node_modules/serverless/lib/Serverless.js:133:33)
      at runCallback (timers.js:705:18)
      at tryOnImmediate (timers.js:676:5)
      at processImmediate (timers.js:658:5)
      at process.topLevelDomainCallback (domain.js:120:23)
  From previous event:
      at Serverless.run (/Users/cyber/.nvm/versions/node/v10.14.2/lib/node_modules/serverless/lib/Serverless.js:120:74)
      at serverless.init.then (/Users/cyber/.nvm/versions/node/v10.14.2/lib/node_modules/serverless/bin/serverless.js:82:30)
      at /Users/cyber/.nvm/versions/node/v10.14.2/lib/node_modules/serverless/node_modules/graceful-fs/graceful-fs.js:136:16
      at /Users/cyber/.nvm/versions/node/v10.14.2/lib/node_modules/serverless/node_modules/graceful-fs/graceful-fs.js:57:14
      at FSReqWrap.oncomplete (fs.js:141:20)
  From previous event:
      at initializeErrorReporter.then (/Users/cyber/.nvm/versions/node/v10.14.2/lib/node_modules/serverless/bin/serverless.js:82:8)
      at runCallback (timers.js:705:18)
      at tryOnImmediate (timers.js:676:5)
      at processImmediate (timers.js:658:5)
      at process.topLevelDomainCallback (domain.js:120:23)
  From previous event:
      at Object.<anonymous> (/Users/cyber/.nvm/versions/node/v10.14.2/lib/node_modules/serverless/bin/serverless.js:71:4)
      at Module._compile (internal/modules/cjs/loader.js:689:30)
      at Object.Module._extensions..js (internal/modules/cjs/loader.js:700:10)
      at Module.load (internal/modules/cjs/loader.js:599:32)
      at tryModuleLoad (internal/modules/cjs/loader.js:538:12)
      at Function.Module._load (internal/modules/cjs/loader.js:530:3)
      at Function.Module.runMain (internal/modules/cjs/loader.js:742:12)
      at startup (internal/bootstrap/node.js:282:19)
      at bootstrapNodeJSCore (internal/bootstrap/node.js:743:3)
 
  Get Support --------------------------------------------
     Docs:          docs.serverless.com
     Bugs:          github.com/serverless/serverless/issues
     Issues:        forum.serverless.com
 
  Your Environment Information ---------------------------
     Operating System:          darwin
     Node Version:              10.14.2
     Framework Version:         1.66.0
     Plugin Version:            3.5.0
     SDK Version:               2.3.0
     Components Version:        2.22.3

About this issue

Most upvoted comments

I also got this error while having a pyproject.toml but not using poetry (since that file is used for other things too).

In code, it should detect the lack of required contents of the pyproject.toml file and warn the user

Why not just look for poetry.lock instead of pyproject.toml?

Also, the workaround is really simple and already documented:

custom:
  pythonRequirements:
    usePoetry: false

I dug through the code and eventually discovered the problem was my pyproject.toml was missing:

[build-system]
requires = ["poetry>=0.12"]
build-backend = "poetry.masonry.api"

You need this otherwise you get the above error. It is unfortunate because I was using dephell to convert to poetry and it didn’t add that stanza to the generated pyproject.toml.

I also got this error while having a pyproject.toml but not using poetry (since that file is used for other things too).

In code, it should detect the lack of required contents of the pyproject.toml file and warn the user

Why not just look for poetry.lock instead of pyproject.toml?

Also, the workaround is really simple and already documented:

custom:
  pythonRequirements:
    usePoetry: false

I agree with @brettdh . The pyproject.toml file is not an exclusive poetry file so the best alternative is to use poetry.lock to generate requirements.txt within the .serverless directory

@AndrewFarley thanks so much!

$ serverless package

Serverless: Load command interactiveCli
Serverless: Load command config
Serverless: Load command config:credentials
Serverless: Load command config:tabcompletion
Serverless: Load command config:tabcompletion:install
Serverless: Load command config:tabcompletion:uninstall
Serverless: Load command create
Serverless: Load command install
Serverless: Load command package
Serverless: Load command deploy
Serverless: Load command deploy:function
Serverless: Load command deploy:list
Serverless: Load command deploy:list:functions
Serverless: Load command invoke
Serverless: Load command invoke:local
Serverless: Load command info
Serverless: Load command logs
Serverless: Load command metrics
Serverless: Load command print
Serverless: Load command remove
Serverless: Load command rollback
Serverless: Load command rollback:function
Serverless: Load command slstats
Serverless: Load command plugin
Serverless: Load command plugin
Serverless: Load command plugin:install
Serverless: Load command plugin
Serverless: Load command plugin:uninstall
Serverless: Load command plugin
Serverless: Load command plugin:list
Serverless: Load command plugin
Serverless: Load command plugin:search
Serverless: Load command config
Serverless: Load command config:credentials
Serverless: Load command rollback
Serverless: Load command rollback:function
Serverless: Load command upgrade
Serverless: Load command uninstall
Serverless: Load command requirements
Serverless: Load command requirements:clean
Serverless: Load command requirements:install
Serverless: Load command requirements:cleanCache
Serverless: Load command login
Serverless: Load command logout
Serverless: Load command generate-event
Serverless: Load command test
Serverless: Load command dashboard
Serverless: Load command output
Serverless: Load command output:get
Serverless: Load command output:list
Serverless: Load command param
Serverless: Load command param:get
Serverless: Load command param:list
Serverless: Load command dev
Serverless: Invoke package
Serverless: Invoke aws:common:validate
Serverless: Invoke aws:common:cleanupTempDir
Serverless: Generated requirements from /Users/benjaminleff/.vscode/space-debris/requirements.txt in /Users/benjaminleff/.vscode/space-debris/.serverless/requirements.txt...
Serverless: Installing requirements from /Users/benjaminleff/Library/Caches/serverless-python-requirements/a630932a3ab4fa1bd748aa36ca92d5b597c8d78f2f6d888cc2bebc1de8a43f89_slspyc/requirements.txt ...
Serverless: Docker Image: lambci/lambda:build-python3.7
Serverless: Using download cache directory /Users/benjaminleff/Library/Caches/serverless-python-requirements/downloadCacheslspyc
Serverless: Running docker run --rm -v /Users/benjaminleff/Library/Caches/serverless-python-requirements/a630932a3ab4fa1bd748aa36ca92d5b597c8d78f2f6d888cc2bebc1de8a43f89_slspyc\:/var/task\:z -v /Users/benjaminleff/Library/Caches/serverless-python-requirements/downloadCacheslspyc\:/var/useDownloadCache\:z -u 0 lambci/lambda\:build-python3.7 python3.7 -m pip install -t /var/task/ -r /var/task/requirements.txt --cache-dir /var/useDownloadCache...
Serverless: Packaging service...
Serverless: Excluding development dependencies...
Serverless: Injecting required Python packages to package...
Serverless: Invoke aws:package:finalize
Serverless: Invoke aws:common:moveArtifactsToPackage

@AndrewFarley Got it. Have a great weekend!

@BwL1289 Looks good eh?