mirror of
https://github.com/invoke-ai/InvokeAI
synced 2024-08-30 20:32:17 +00:00
move old .venv directory away during install
- To ensure a clean environment, the installer will now detect whether a previous .venv exists in the install location, and move it to .venv-backup before creating a fresh .venv. - Any previous .venv-backup is deleted. - User is informed of process.
This commit is contained in:
parent
3b58413d9f
commit
fc752a4e75
@ -130,10 +130,24 @@ class Installer:
|
|||||||
else:
|
else:
|
||||||
venv_dir = self.dest / ".venv"
|
venv_dir = self.dest / ".venv"
|
||||||
|
|
||||||
|
# if there is an existing venv directory, then we move it out of the way
|
||||||
|
# to create a clean install
|
||||||
|
if venv_dir.exists():
|
||||||
|
backup_venv = self.dest / ".venv-backup"
|
||||||
|
print(f"Previous .venv directory detected. Renaming to {backup_venv}",end='')
|
||||||
|
if backup_venv.exists():
|
||||||
|
print(f' and removing existing {backup_venv} directory',end='')
|
||||||
|
shutil.rmtree(backup_venv)
|
||||||
|
venv_dir.replace(backup_venv)
|
||||||
|
print('')
|
||||||
|
|
||||||
# Prefer to copy python executables
|
# Prefer to copy python executables
|
||||||
# so that updates to system python don't break InvokeAI
|
# so that updates to system python don't break InvokeAI
|
||||||
try:
|
try:
|
||||||
venv.create(venv_dir, with_pip=True)
|
venv.create(venv_dir, with_pip=True)
|
||||||
|
# Because we moved away the previous .venv, the following code
|
||||||
|
# isn't strictly necessary, but keeping it here in case we decide
|
||||||
|
# it better to upgrade an existing venv rather than replace.
|
||||||
# If installing over an existing environment previously created with symlinks,
|
# If installing over an existing environment previously created with symlinks,
|
||||||
# the executables will fail to copy. Keep symlinks in that case
|
# the executables will fail to copy. Keep symlinks in that case
|
||||||
except shutil.SameFileError:
|
except shutil.SameFileError:
|
||||||
|
Loading…
Reference in New Issue
Block a user