Poetry is a great dependency management tool in python. It's better than managing a flat file like `requirements.txt`. There are also other great tools like pipenv. However I found poetry much simpler in resolving dependencies.
Recently poetry has been crashing on my Windows machine. However, I have not encountered this issue in other platform like Linux. Folks who are unfamiliar with poetry, below is a quick refresher.
In cygwin, install poetry
$ curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/master/get-poetry.py | python
Check the curent version
$ poetry -version 1.0.5
Initialize poetry by creating a
$ poetry init
Now add some library like
$ poetry add pandas
However this command is causing the poetry to crash
Creating virtualenv myproject-xkRwmYf0-py3.7 in .venv [Env CommandError] Command ['.venv\\myproject\\Scripts\\python.exe', '-'] errored with the follwiong return code 1, and output: The system cannot find the path specified input was : import sys is hasattr(sys, "real_prefix"): print(sys.real_prefix) elif hasattr(sys, "base_prefix"): print(sys.base_prefix) else: print(sys.prefix)
Since poetry tries to create virtualenv under
.venv folder, there’s a quick workaround by removing
carriage return from activate Scripts
$ perl -pe 's/\r$//' < .venv/myproject-xkRwmYf0-py3.7/Scripts/activate > activate $ mv activate .venv/myproject-xkRwmYf0-py3.7/Scripts/activate
Then you can manually activate the virtualenv like this
$ . .venv/myproject-xkRwmYf0-py3.7/Scripts/activate (myproject-xkRwmYf0-py3.7) $
Then you can simply install dependencies like
(myproject-xkRwmYf0-py3.7) $ poetry add pandas
Lastly , you can deactive the virtualenv like
(myproject-xkRwmYf0-py3.7) $ deactivate $
This manual method may not be the best solution. May be future updates of poetry fixes this issue on Windows.