Issue
I just transitioned from pipenv
to poetry
and I'm having trouble importing a package from a local package I'm developing in a few of my scripts. To make this more concrete, my project looks something like:
pyproject.toml
poetry.lock
bin/
myscript.py
mypackage/
__init__.py
lots_of_stuff.py
Within myscript.py
, I import mypackage
. But when I poetry run bin/myscript.py
I get a ModuleNotFoundError
because the PYTHONPATH
does not include the root of this project. With pipenv
, I could solve that by specifying PYTHONPATH=/path/to/project/root
in a .env
file, which would be automatically loaded at runtime. What is the right way to import local packages with poetry?
I ran across this piece on using environment variables but export POETRY_PYTHONPATH=/path/to/roject/root
doesn't seem to help.
Solution
After quite a bit more googling, I stumbled on the packages attribute within the tool.poetry section for pyproject.toml files. To include local packages in distribution, you can specify
# pyproject.toml
[tool.poetry]
# ...
packages = [
{ include = "mypackage" },
]
Now these packages are installed in editable mode :)
Answered By - dino Answer Checked By - Mary Flores (WPSolving Volunteer)