(installer) fix failure to create venv over an existing venv

if reinstalling over an existing installation where the .venv
was created with symlinks to system python instead of copies
of the python executable, the installer would raise a
SameFileError, because it would attempt to copy Python over
itself. This fixes the issue.
This commit is contained in:
Eugene Brodsky 2023-02-03 00:36:26 -05:00
parent 3f193d2b97
commit 3b43f3a5a1

View File

@ -129,7 +129,14 @@ class Installer:
else:
venv_dir = self.dest / ".venv"
venv.create(venv_dir, with_pip=True)
# Prefer to copy python executables
# so that updates to system python don't break InvokeAI
try:
venv.create(venv_dir, with_pip=True)
# If installing over an existing environment previously created with symlinks,
# the executables will fail to copy. Keep symlinks in that case
except shutil.SameFileError:
venv.create(venv_dir, with_pip=True, symlinks=True)
# upgrade pip in Python 3.9 environments
if int(platform.python_version_tuple()[1]) == 9: