poetry installation failing on Mac OS, says "should_use_symlinks"

Question:

I am trying to install poetry using the following command

curl -sSL https://install.python-poetry.org | python3 -

but it is failing with the following exception:

Exception: This build of python cannot create venvs without using symlinks

Below is the text detailing the error

Retrieving Poetry metadata

# Welcome to Poetry!

This will download and install the latest version of Poetry,
a dependency and package manager for Python.

It will add the `poetry` command to Poetry's bin directory, located at:

/Users/DaftaryG/.local/bin

You can uninstall at any time by executing this script with the --uninstall option,
and these changes will be reverted.

Installing Poetry (1.2.1): Creating environment
Traceback (most recent call last):
  File "<stdin>", line 940, in <module>
  File "<stdin>", line 919, in main
  File "<stdin>", line 550, in run
  File "<stdin>", line 571, in install
  File "/Library/Developer/CommandLineTools/Library/Frameworks/Python3.framework/Versions/3.9/lib/python3.9/contextlib.py", line 117, in __enter__
    return next(self.gen)
  File "<stdin>", line 643, in make_env
  File "<stdin>", line 629, in make_env
  File "<stdin>", line 309, in make
  File "/Library/Developer/CommandLineTools/Library/Frameworks/Python3.framework/Versions/3.9/lib/python3.9/venv/__init__.py", line 66, in __init__
    self.symlinks = should_use_symlinks(symlinks)
  File "/Library/Developer/CommandLineTools/Library/Frameworks/Python3.framework/Versions/3.9/lib/python3.9/venv/__init__.py", line 31, in should_use_symlinks
    raise Exception("This build of python cannot create venvs without using symlinks")
Exception: This build of python cannot create venvs without using symlinks

I already have symlinks installed so not having that does not seem to be the problem. Would anyone know the cause of this error?

Answers:

Not the best solution, but you can install it using Homebrew, if you have it. That’s what I did.

brew install poetry
Answered By: Alex

I had the same error.

In my case, the problem was the global version of python set by pyenv was not python 3.x.

So

pyenv global 3.x.x

fixed it.

Answered By: j0hnta

For anyone looking for an alternative to homebrew for installation, the discussion on this poetry issue helped me find a solution:

The issue here is the macOS-provided python is not relocatable, so venv creates a broken python when using –copies / symlinks=False as our installer does.

Essentially, to solve this problem, download a distribution of python directly from python.org. For whatever reason, the poetry installation command isn’t compatible with whatever distribution comes pre-built on a Mac.

Answered By: Daniel Long

Had the same problem. The above solutions did not work.
The brew install was not a good solution for me (see this post on why).

So I noodled around a bit and this worked and is only a tweaked version of the official recommended installation (which is not brew install)

Specifically, when specifying the major+minor versioning, it worked.

pyenv install 3.10.1
pyenv global 3.10.1
curl -sSL https://install.python-poetry.org | python3.10 -

Using anything else than major.minor (e.g. python python3 or python3.10.1) resulted in the symlink error you had.

Answered By: alps