mirror of
https://github.com/comfyanonymous/ComfyUI.git
synced 2026-01-10 06:10:50 +08:00
Correctly preserves your installed torch when installed like pip install --no-build-isolation git+https://github.com/hiddenswitch/ComfyUI.git
This commit is contained in:
parent
e45433755e
commit
b8fc850b47
@ -117,6 +117,12 @@ On macOS, install exactly Python 3.11 using `brew`, which you can download from
|
|||||||
```shell
|
```shell
|
||||||
pip install git+https://github.com/hiddenswitch/ComfyUI.git
|
pip install git+https://github.com/hiddenswitch/ComfyUI.git
|
||||||
```
|
```
|
||||||
|
**Advanced**: If you are running in Google Collab or another environment which has already installed `torch` for you, disable build isolation, and the package will recognize your currently installed torch.
|
||||||
|
```shell
|
||||||
|
# You will need wheel, which isn't included in Python 3.11 or later
|
||||||
|
pip install wheel
|
||||||
|
pip install --no-build-isolation git+https://github.com/hiddenswitch/ComfyUI.git
|
||||||
|
```
|
||||||
4. To run the web server:
|
4. To run the web server:
|
||||||
```shell
|
```shell
|
||||||
comfyui
|
comfyui
|
||||||
|
|||||||
0
comfy/configs/__init__.py
Normal file
0
comfy/configs/__init__.py
Normal file
0
comfy/ldm/models/diffusion/__init__.py
Normal file
0
comfy/ldm/models/diffusion/__init__.py
Normal file
@ -3,7 +3,6 @@ torchaudio
|
|||||||
torchvision
|
torchvision
|
||||||
torchdiffeq>=0.2.3
|
torchdiffeq>=0.2.3
|
||||||
torchsde>=0.2.6
|
torchsde>=0.2.6
|
||||||
torchvision
|
|
||||||
einops>=0.6.0
|
einops>=0.6.0
|
||||||
open-clip-torch>=2.16.0
|
open-clip-torch>=2.16.0
|
||||||
transformers>=4.29.1
|
transformers>=4.29.1
|
||||||
|
|||||||
37
setup.py
37
setup.py
@ -4,7 +4,7 @@ import os.path
|
|||||||
import platform
|
import platform
|
||||||
import subprocess
|
import subprocess
|
||||||
import sys
|
import sys
|
||||||
from typing import List
|
from typing import List, Literal, Union, Optional
|
||||||
|
|
||||||
from pip._internal.index.collector import LinkCollector
|
from pip._internal.index.collector import LinkCollector
|
||||||
from pip._internal.index.package_finder import PackageFinder
|
from pip._internal.index.package_finder import PackageFinder
|
||||||
@ -44,11 +44,21 @@ cpu_torch_index = ("https://download.pytorch.org/whl/cpu", "https://download.pyt
|
|||||||
# xformers not required for new torch
|
# xformers not required for new torch
|
||||||
|
|
||||||
"""
|
"""
|
||||||
Indicates if we're installing an editable (develop) mode package
|
Indicates if this is installing an editable (develop) mode package
|
||||||
"""
|
"""
|
||||||
is_editable = '--editable' in sys.argv or '-e' in sys.argv or (
|
is_editable = '--editable' in sys.argv or '-e' in sys.argv or (
|
||||||
'python' in sys.argv and 'setup.py' in sys.argv and 'develop' in sys.argv)
|
'python' in sys.argv and 'setup.py' in sys.argv and 'develop' in sys.argv)
|
||||||
|
|
||||||
|
# If we're installing with no build isolation, we can check if torch is already installed in the environment, and if so,
|
||||||
|
# go ahead and use the version that is already installed.
|
||||||
|
is_build_isolated_and_torch_version: Optional[str]
|
||||||
|
try:
|
||||||
|
import torch
|
||||||
|
print(f"comfyui setup.py: torch version was {torch.__version__} and built without build isolation, using this torch instead of upgrading", file=sys.stderr)
|
||||||
|
is_build_isolated_and_torch_version = torch.__version__
|
||||||
|
except Exception as e:
|
||||||
|
print(f"comfyui setup.py: torch could not be imported because running with build isolation or not installed ({e}), installing torch for your platform", file=sys.stderr)
|
||||||
|
is_build_isolated_and_torch_version = None
|
||||||
|
|
||||||
def _is_nvidia() -> bool:
|
def _is_nvidia() -> bool:
|
||||||
system = platform.system().lower()
|
system = platform.system().lower()
|
||||||
@ -102,6 +112,15 @@ def _is_linux_arm64():
|
|||||||
|
|
||||||
def dependencies() -> List[str]:
|
def dependencies() -> List[str]:
|
||||||
_dependencies = open(os.path.join(os.path.dirname(__file__), "requirements.txt")).readlines()
|
_dependencies = open(os.path.join(os.path.dirname(__file__), "requirements.txt")).readlines()
|
||||||
|
# torch is already installed, and we could have only known this if the user specifically requested a
|
||||||
|
# no-build-isolation build, so the user knows what is going on
|
||||||
|
if is_build_isolated_and_torch_version is not None:
|
||||||
|
for i, dep in enumerate(_dependencies):
|
||||||
|
stripped = dep.strip()
|
||||||
|
if stripped == "torch":
|
||||||
|
_dependencies[i] = f"{stripped}=={is_build_isolated_and_torch_version}"
|
||||||
|
break
|
||||||
|
return _dependencies
|
||||||
_alternative_indices = [amd_torch_index, nvidia_torch_index]
|
_alternative_indices = [amd_torch_index, nvidia_torch_index]
|
||||||
session = PipSession()
|
session = PipSession()
|
||||||
|
|
||||||
@ -120,14 +139,14 @@ def dependencies() -> List[str]:
|
|||||||
|
|
||||||
if sys.version_info >= (3, 12):
|
if sys.version_info >= (3, 12):
|
||||||
# use the nightlies
|
# use the nightlies
|
||||||
index_urls = [nightly for (_, nightly) in index_urls]
|
index_urls_selected = [nightly for (_, nightly) in index_urls]
|
||||||
_alternative_indices = [nightly for (_, nightly) in _alternative_indices]
|
_alternative_indices_selected = [nightly for (_, nightly) in _alternative_indices]
|
||||||
else:
|
else:
|
||||||
index_urls = [stable for (stable, _) in index_urls]
|
index_urls_selected = [stable for (stable, _) in index_urls]
|
||||||
_alternative_indices = [stable for (stable, _) in _alternative_indices]
|
_alternative_indices_selected = [stable for (stable, _) in _alternative_indices]
|
||||||
try:
|
try:
|
||||||
# pip 23
|
# pip 23
|
||||||
finder = PackageFinder.create(LinkCollector(session, SearchScope([], index_urls, no_index=False)),
|
finder = PackageFinder.create(LinkCollector(session, SearchScope([], index_urls_selected, no_index=False)),
|
||||||
SelectionPreferences(allow_yanked=False, prefer_binary=False,
|
SelectionPreferences(allow_yanked=False, prefer_binary=False,
|
||||||
allow_all_prereleases=True))
|
allow_all_prereleases=True))
|
||||||
except:
|
except:
|
||||||
@ -138,12 +157,12 @@ def dependencies() -> List[str]:
|
|||||||
allow_all_prereleases=True)
|
allow_all_prereleases=True)
|
||||||
, use_deprecated_html5lib=False)
|
, use_deprecated_html5lib=False)
|
||||||
except:
|
except:
|
||||||
raise Exception("upgrade pip with\npip install -U pip")
|
raise Exception("upgrade pip with\npython -m pip install -U pip")
|
||||||
for i, package in enumerate(_dependencies[:]):
|
for i, package in enumerate(_dependencies[:]):
|
||||||
requirement = InstallRequirement(Requirement(package), comes_from=f"{package_name}=={version}")
|
requirement = InstallRequirement(Requirement(package), comes_from=f"{package_name}=={version}")
|
||||||
candidate = finder.find_best_candidate(requirement.name, requirement.specifier)
|
candidate = finder.find_best_candidate(requirement.name, requirement.specifier)
|
||||||
if candidate.best_candidate is not None:
|
if candidate.best_candidate is not None:
|
||||||
if any([url in candidate.best_candidate.link.url for url in _alternative_indices]):
|
if any([url in candidate.best_candidate.link.url for url in _alternative_indices_selected]):
|
||||||
_dependencies[i] = f"{requirement.name} @ {candidate.best_candidate.link.url}"
|
_dependencies[i] = f"{requirement.name} @ {candidate.best_candidate.link.url}"
|
||||||
return _dependencies
|
return _dependencies
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user