diff --git a/comfy/deploy_environment.py b/comfy/deploy_environment.py index cd45d9576..8c99a3584 100644 --- a/comfy/deploy_environment.py +++ b/comfy/deploy_environment.py @@ -2,17 +2,22 @@ import functools import logging import os -import folder_paths - logger = logging.getLogger(__name__) _DEFAULT_DEPLOY_ENV = "local-git" _ENV_FILENAME = ".comfy_environment" +# Resolve the ComfyUI install directory (the parent of this `comfy/` package). +# We deliberately avoid `folder_paths.base_path` here because that is overridden +# by the `--base-directory` CLI arg to a user-supplied path, whereas the +# `.comfy_environment` marker is written by launchers/installers next to the +# ComfyUI install itself. +_COMFY_INSTALL_DIR = os.path.dirname(os.path.dirname(os.path.realpath(__file__))) + @functools.cache def get_deploy_environment() -> str: - env_file = os.path.join(folder_paths.base_path, _ENV_FILENAME) + env_file = os.path.join(_COMFY_INSTALL_DIR, _ENV_FILENAME) try: with open(env_file, encoding="utf-8") as f: # Cap the read so a malformed or maliciously crafted file (e.g. diff --git a/tests-unit/deploy_environment_test.py b/tests-unit/deploy_environment_test.py index ef803f737..24359c5d3 100644 --- a/tests-unit/deploy_environment_test.py +++ b/tests-unit/deploy_environment_test.py @@ -4,15 +4,15 @@ import os import pytest +from comfy import deploy_environment from comfy.deploy_environment import get_deploy_environment @pytest.fixture(autouse=True) -def _reset_cache_and_base_path(tmp_path, monkeypatch): - """Reset the functools cache and point folder_paths.base_path at a tmp dir for each test.""" +def _reset_cache_and_install_dir(tmp_path, monkeypatch): + """Reset the functools cache and point the ComfyUI install dir at a tmp dir for each test.""" get_deploy_environment.cache_clear() - import folder_paths - monkeypatch.setattr(folder_paths, "base_path", str(tmp_path)) + monkeypatch.setattr(deploy_environment, "_COMFY_INSTALL_DIR", str(tmp_path)) yield get_deploy_environment.cache_clear()