comfy-env 0.1.22__tar.gz → 0.1.24__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of comfy-env might be problematic. Click here for more details.
- {comfy_env-0.1.22 → comfy_env-0.1.24}/PKG-INFO +1 -1
- {comfy_env-0.1.22 → comfy_env-0.1.24}/pyproject.toml +1 -1
- {comfy_env-0.1.22 → comfy_env-0.1.24}/src/comfy_env/install.py +3 -1
- comfy_env-0.1.24/src/comfy_env/packages/apt.py +74 -0
- comfy_env-0.1.22/src/comfy_env/packages/apt.py +0 -36
- {comfy_env-0.1.22 → comfy_env-0.1.24}/.github/workflows/ci.yml +0 -0
- {comfy_env-0.1.22 → comfy_env-0.1.24}/.github/workflows/publish.yml +0 -0
- {comfy_env-0.1.22 → comfy_env-0.1.24}/.gitignore +0 -0
- {comfy_env-0.1.22 → comfy_env-0.1.24}/LICENSE +0 -0
- {comfy_env-0.1.22 → comfy_env-0.1.24}/README.md +0 -0
- {comfy_env-0.1.22 → comfy_env-0.1.24}/src/comfy_env/__init__.py +0 -0
- {comfy_env-0.1.22 → comfy_env-0.1.24}/src/comfy_env/cli.py +0 -0
- {comfy_env-0.1.22 → comfy_env-0.1.24}/src/comfy_env/config/__init__.py +0 -0
- {comfy_env-0.1.22 → comfy_env-0.1.24}/src/comfy_env/config/parser.py +0 -0
- {comfy_env-0.1.22 → comfy_env-0.1.24}/src/comfy_env/config/types.py +0 -0
- {comfy_env-0.1.22 → comfy_env-0.1.24}/src/comfy_env/detection/__init__.py +0 -0
- {comfy_env-0.1.22 → comfy_env-0.1.24}/src/comfy_env/detection/cuda.py +0 -0
- {comfy_env-0.1.22 → comfy_env-0.1.24}/src/comfy_env/detection/gpu.py +0 -0
- {comfy_env-0.1.22 → comfy_env-0.1.24}/src/comfy_env/detection/platform.py +0 -0
- {comfy_env-0.1.22 → comfy_env-0.1.24}/src/comfy_env/detection/runtime.py +0 -0
- {comfy_env-0.1.22 → comfy_env-0.1.24}/src/comfy_env/environment/__init__.py +0 -0
- {comfy_env-0.1.22 → comfy_env-0.1.24}/src/comfy_env/environment/cache.py +0 -0
- {comfy_env-0.1.22 → comfy_env-0.1.24}/src/comfy_env/environment/libomp.py +0 -0
- {comfy_env-0.1.22 → comfy_env-0.1.24}/src/comfy_env/environment/paths.py +0 -0
- {comfy_env-0.1.22 → comfy_env-0.1.24}/src/comfy_env/environment/setup.py +0 -0
- {comfy_env-0.1.22 → comfy_env-0.1.24}/src/comfy_env/isolation/__init__.py +0 -0
- {comfy_env-0.1.22 → comfy_env-0.1.24}/src/comfy_env/isolation/tensor_utils.py +0 -0
- {comfy_env-0.1.22 → comfy_env-0.1.24}/src/comfy_env/isolation/workers/__init__.py +0 -0
- {comfy_env-0.1.22 → comfy_env-0.1.24}/src/comfy_env/isolation/workers/base.py +0 -0
- {comfy_env-0.1.22 → comfy_env-0.1.24}/src/comfy_env/isolation/workers/subprocess.py +0 -0
- {comfy_env-0.1.22 → comfy_env-0.1.24}/src/comfy_env/isolation/wrap.py +0 -0
- {comfy_env-0.1.22 → comfy_env-0.1.24}/src/comfy_env/packages/__init__.py +0 -0
- {comfy_env-0.1.22 → comfy_env-0.1.24}/src/comfy_env/packages/cuda_wheels.py +0 -0
- {comfy_env-0.1.22 → comfy_env-0.1.24}/src/comfy_env/packages/node_dependencies.py +0 -0
- {comfy_env-0.1.22 → comfy_env-0.1.24}/src/comfy_env/packages/pixi.py +0 -0
- {comfy_env-0.1.22 → comfy_env-0.1.24}/src/comfy_env/packages/toml_generator.py +0 -0
- {comfy_env-0.1.22 → comfy_env-0.1.24}/src/comfy_env/templates/comfy-env-instructions.txt +0 -0
- {comfy_env-0.1.22 → comfy_env-0.1.24}/src/comfy_env/templates/comfy-env.toml +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: comfy-env
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.24
|
|
4
4
|
Summary: Environment management for ComfyUI custom nodes - CUDA wheel resolution and process isolation
|
|
5
5
|
Project-URL: Homepage, https://github.com/PozzettiAndrea/comfy-env
|
|
6
6
|
Project-URL: Repository, https://github.com/PozzettiAndrea/comfy-env
|
|
@@ -59,7 +59,9 @@ def _install_apt_packages(packages: List[str], log: Callable[[str], None], dry_r
|
|
|
59
59
|
return
|
|
60
60
|
log(f"\n[apt] Installing: {', '.join(packages)}")
|
|
61
61
|
if not dry_run:
|
|
62
|
-
apt_install(packages, log)
|
|
62
|
+
success = apt_install(packages, log)
|
|
63
|
+
if not success:
|
|
64
|
+
log("[apt] WARNING: Some apt packages failed to install. This may cause issues.")
|
|
63
65
|
|
|
64
66
|
|
|
65
67
|
def _set_persistent_env_vars(env_vars: dict, log: Callable[[str], None], dry_run: bool) -> None:
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
"""APT package installation (Linux only)."""
|
|
2
|
+
|
|
3
|
+
import subprocess
|
|
4
|
+
import sys
|
|
5
|
+
from typing import Callable, List
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
def apt_install(packages: List[str], log: Callable[[str], None] = print) -> bool:
|
|
9
|
+
"""Install system packages via apt-get. No-op on non-Linux."""
|
|
10
|
+
if not packages or sys.platform != "linux":
|
|
11
|
+
return True
|
|
12
|
+
|
|
13
|
+
log(f"[apt] Requested packages: {packages}")
|
|
14
|
+
|
|
15
|
+
# Check which packages are missing
|
|
16
|
+
missing = check_apt_packages(packages)
|
|
17
|
+
if not missing:
|
|
18
|
+
log("[apt] All packages already installed")
|
|
19
|
+
return True
|
|
20
|
+
|
|
21
|
+
log(f"[apt] Missing packages: {missing}")
|
|
22
|
+
|
|
23
|
+
# Run apt-get update with full output
|
|
24
|
+
log("[apt] Running: sudo apt-get update")
|
|
25
|
+
update_result = subprocess.run(
|
|
26
|
+
["sudo", "apt-get", "update"],
|
|
27
|
+
capture_output=True, text=True
|
|
28
|
+
)
|
|
29
|
+
if update_result.returncode != 0:
|
|
30
|
+
log(f"[apt] WARNING: apt-get update failed (exit {update_result.returncode})")
|
|
31
|
+
log(f"[apt] stderr: {update_result.stderr}")
|
|
32
|
+
else:
|
|
33
|
+
log("[apt] apt-get update succeeded")
|
|
34
|
+
|
|
35
|
+
# Install packages ONE BY ONE so one failure doesn't block others
|
|
36
|
+
installed = []
|
|
37
|
+
failed = []
|
|
38
|
+
for pkg in missing:
|
|
39
|
+
log(f"[apt] Installing: {pkg}")
|
|
40
|
+
result = subprocess.run(
|
|
41
|
+
["sudo", "apt-get", "install", "-y", pkg],
|
|
42
|
+
capture_output=True, text=True
|
|
43
|
+
)
|
|
44
|
+
if result.returncode != 0:
|
|
45
|
+
log(f"[apt] FAILED: {pkg} - {result.stderr.strip()}")
|
|
46
|
+
failed.append(pkg)
|
|
47
|
+
else:
|
|
48
|
+
log(f"[apt] OK: {pkg}")
|
|
49
|
+
installed.append(pkg)
|
|
50
|
+
|
|
51
|
+
# Summary
|
|
52
|
+
if installed:
|
|
53
|
+
log(f"[apt] Successfully installed: {installed}")
|
|
54
|
+
if failed:
|
|
55
|
+
log(f"[apt] Failed to install: {failed}")
|
|
56
|
+
|
|
57
|
+
# Verify what's actually installed now
|
|
58
|
+
still_missing = check_apt_packages(packages)
|
|
59
|
+
if still_missing:
|
|
60
|
+
log(f"[apt] WARNING: These packages are not available: {still_missing}")
|
|
61
|
+
|
|
62
|
+
# Return True if we installed at least something (partial success is OK)
|
|
63
|
+
return len(installed) > 0 or len(missing) == len(failed)
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
def check_apt_packages(packages: List[str]) -> List[str]:
|
|
67
|
+
"""Return list of packages NOT installed."""
|
|
68
|
+
if sys.platform != "linux":
|
|
69
|
+
return []
|
|
70
|
+
|
|
71
|
+
return [
|
|
72
|
+
pkg for pkg in packages
|
|
73
|
+
if subprocess.run(["dpkg", "-s", pkg], capture_output=True).returncode != 0
|
|
74
|
+
]
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
"""APT package installation (Linux only)."""
|
|
2
|
-
|
|
3
|
-
import subprocess
|
|
4
|
-
import sys
|
|
5
|
-
from typing import Callable, List
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
def apt_install(packages: List[str], log: Callable[[str], None] = print) -> bool:
|
|
9
|
-
"""Install system packages via apt-get. No-op on non-Linux."""
|
|
10
|
-
if not packages or sys.platform != "linux":
|
|
11
|
-
return True
|
|
12
|
-
|
|
13
|
-
log(f"Installing apt packages: {packages}")
|
|
14
|
-
|
|
15
|
-
subprocess.run(["sudo", "apt-get", "update"], capture_output=True, text=True)
|
|
16
|
-
|
|
17
|
-
result = subprocess.run(
|
|
18
|
-
["sudo", "apt-get", "install", "-y"] + packages,
|
|
19
|
-
capture_output=True, text=True
|
|
20
|
-
)
|
|
21
|
-
if result.returncode != 0:
|
|
22
|
-
log(f"Warning: apt-get install failed: {result.stderr[:200]}")
|
|
23
|
-
return False
|
|
24
|
-
|
|
25
|
-
return True
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
def check_apt_packages(packages: List[str]) -> List[str]:
|
|
29
|
-
"""Return list of packages NOT installed."""
|
|
30
|
-
if sys.platform != "linux":
|
|
31
|
-
return []
|
|
32
|
-
|
|
33
|
-
return [
|
|
34
|
-
pkg for pkg in packages
|
|
35
|
-
if subprocess.run(["dpkg", "-s", pkg], capture_output=True).returncode != 0
|
|
36
|
-
]
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|