comfy-env 0.1.22__tar.gz → 0.1.23__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.
- {comfy_env-0.1.22 → comfy_env-0.1.23}/PKG-INFO +1 -1
- {comfy_env-0.1.22 → comfy_env-0.1.23}/pyproject.toml +1 -1
- {comfy_env-0.1.22 → comfy_env-0.1.23}/src/comfy_env/install.py +3 -1
- comfy_env-0.1.23/src/comfy_env/packages/apt.py +68 -0
- comfy_env-0.1.22/src/comfy_env/packages/apt.py +0 -36
- {comfy_env-0.1.22 → comfy_env-0.1.23}/.github/workflows/ci.yml +0 -0
- {comfy_env-0.1.22 → comfy_env-0.1.23}/.github/workflows/publish.yml +0 -0
- {comfy_env-0.1.22 → comfy_env-0.1.23}/.gitignore +0 -0
- {comfy_env-0.1.22 → comfy_env-0.1.23}/LICENSE +0 -0
- {comfy_env-0.1.22 → comfy_env-0.1.23}/README.md +0 -0
- {comfy_env-0.1.22 → comfy_env-0.1.23}/src/comfy_env/__init__.py +0 -0
- {comfy_env-0.1.22 → comfy_env-0.1.23}/src/comfy_env/cli.py +0 -0
- {comfy_env-0.1.22 → comfy_env-0.1.23}/src/comfy_env/config/__init__.py +0 -0
- {comfy_env-0.1.22 → comfy_env-0.1.23}/src/comfy_env/config/parser.py +0 -0
- {comfy_env-0.1.22 → comfy_env-0.1.23}/src/comfy_env/config/types.py +0 -0
- {comfy_env-0.1.22 → comfy_env-0.1.23}/src/comfy_env/detection/__init__.py +0 -0
- {comfy_env-0.1.22 → comfy_env-0.1.23}/src/comfy_env/detection/cuda.py +0 -0
- {comfy_env-0.1.22 → comfy_env-0.1.23}/src/comfy_env/detection/gpu.py +0 -0
- {comfy_env-0.1.22 → comfy_env-0.1.23}/src/comfy_env/detection/platform.py +0 -0
- {comfy_env-0.1.22 → comfy_env-0.1.23}/src/comfy_env/detection/runtime.py +0 -0
- {comfy_env-0.1.22 → comfy_env-0.1.23}/src/comfy_env/environment/__init__.py +0 -0
- {comfy_env-0.1.22 → comfy_env-0.1.23}/src/comfy_env/environment/cache.py +0 -0
- {comfy_env-0.1.22 → comfy_env-0.1.23}/src/comfy_env/environment/libomp.py +0 -0
- {comfy_env-0.1.22 → comfy_env-0.1.23}/src/comfy_env/environment/paths.py +0 -0
- {comfy_env-0.1.22 → comfy_env-0.1.23}/src/comfy_env/environment/setup.py +0 -0
- {comfy_env-0.1.22 → comfy_env-0.1.23}/src/comfy_env/isolation/__init__.py +0 -0
- {comfy_env-0.1.22 → comfy_env-0.1.23}/src/comfy_env/isolation/tensor_utils.py +0 -0
- {comfy_env-0.1.22 → comfy_env-0.1.23}/src/comfy_env/isolation/workers/__init__.py +0 -0
- {comfy_env-0.1.22 → comfy_env-0.1.23}/src/comfy_env/isolation/workers/base.py +0 -0
- {comfy_env-0.1.22 → comfy_env-0.1.23}/src/comfy_env/isolation/workers/subprocess.py +0 -0
- {comfy_env-0.1.22 → comfy_env-0.1.23}/src/comfy_env/isolation/wrap.py +0 -0
- {comfy_env-0.1.22 → comfy_env-0.1.23}/src/comfy_env/packages/__init__.py +0 -0
- {comfy_env-0.1.22 → comfy_env-0.1.23}/src/comfy_env/packages/cuda_wheels.py +0 -0
- {comfy_env-0.1.22 → comfy_env-0.1.23}/src/comfy_env/packages/node_dependencies.py +0 -0
- {comfy_env-0.1.22 → comfy_env-0.1.23}/src/comfy_env/packages/pixi.py +0 -0
- {comfy_env-0.1.22 → comfy_env-0.1.23}/src/comfy_env/packages/toml_generator.py +0 -0
- {comfy_env-0.1.22 → comfy_env-0.1.23}/src/comfy_env/templates/comfy-env-instructions.txt +0 -0
- {comfy_env-0.1.22 → comfy_env-0.1.23}/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.23
|
|
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,68 @@
|
|
|
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 missing packages
|
|
36
|
+
log(f"[apt] Running: sudo apt-get install -y {' '.join(missing)}")
|
|
37
|
+
result = subprocess.run(
|
|
38
|
+
["sudo", "apt-get", "install", "-y"] + missing,
|
|
39
|
+
capture_output=True, text=True
|
|
40
|
+
)
|
|
41
|
+
|
|
42
|
+
if result.returncode != 0:
|
|
43
|
+
log(f"[apt] ERROR: apt-get install failed (exit {result.returncode})")
|
|
44
|
+
log(f"[apt] stdout: {result.stdout}")
|
|
45
|
+
log(f"[apt] stderr: {result.stderr}")
|
|
46
|
+
return False
|
|
47
|
+
|
|
48
|
+
log("[apt] Installation succeeded")
|
|
49
|
+
|
|
50
|
+
# Verify installation
|
|
51
|
+
still_missing = check_apt_packages(missing)
|
|
52
|
+
if still_missing:
|
|
53
|
+
log(f"[apt] WARNING: These packages still not found: {still_missing}")
|
|
54
|
+
return False
|
|
55
|
+
|
|
56
|
+
log("[apt] All packages verified installed")
|
|
57
|
+
return True
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
def check_apt_packages(packages: List[str]) -> List[str]:
|
|
61
|
+
"""Return list of packages NOT installed."""
|
|
62
|
+
if sys.platform != "linux":
|
|
63
|
+
return []
|
|
64
|
+
|
|
65
|
+
return [
|
|
66
|
+
pkg for pkg in packages
|
|
67
|
+
if subprocess.run(["dpkg", "-s", pkg], capture_output=True).returncode != 0
|
|
68
|
+
]
|
|
@@ -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
|