I'm trying to move to poetry as a system for python virtual environments, but I've never deployed it to heroku before, and am having no luck at all.
I've tried this now with two different fresh poetry projects, and two different fresh git repositories. I:
- create a fresh poetry project
- initialize it as a git repo
- add all the relevant libraries (poetry add flask gunicorn etc)
- add the SINGLE file that holds the entire app, and push it to heroku, which is configured with the poetry buildpack from https://elements.heroku.com/buildpacks/moneymeets/python-poetry-buildpack
- When I try to run the file directly, my Procfile is "web: python project/website.py", I get "ModuleNotFoundError: No module named 'flask'" (which is imported in the first line of the file)
- When I try to run the file indirectly (because maybe it makes a difference?) my Procfile is "web: gunicorn wsgi:app", I get "bash: gunicorn: command not found"
- I am absolutely certain that the pyproject.toml is up to date, and have manually verified that the requirements.txt file it produces contains both flask, and gunicorn, by looking at the build files on the heroku server with "heroku run bash"
- I have tried resetting the heroku cache, manually creating requirements.txt before build, emptying, and then re-filling requirements.txt, and other things I'm sure too. I get one of these two errors, every time. ALL of the questions I see about this issue just ask if the libraries are in the requirements files. Mine are. They are not being seen, or found, or noticed, or used, or something.
I have absolutely no idea what else to do. After this many tries the only sane thing would seem to be to just use pipenv, but the error seems so flagrant, and presumably simple, that it's driving me completely nuts.
EDITS (in response to comment): My file tree has changed through different attempts to make things work, so I've tried a number of configurations. Sometimes the Procfile and app file are in the same, top-level directory -- I've also tried having a runserver script at the top level, and putting the app script inside another directory.
I have also tried having, and not having, local requirements.txt files, in case poetry wasn't successfully creating them as it's supposed to, but the poetry build-back does appear to successfully build its own when launched on heroku. I examined that one, on the heroku machine, and it contained lines for both flask, and gunicorn (among others, but these are the specific two the system says are missing)