diff --git a/runhouse/resources/packages/package.py b/runhouse/resources/packages/package.py index 942c74b1d..b2318089e 100644 --- a/runhouse/resources/packages/package.py +++ b/runhouse/resources/packages/package.py @@ -414,9 +414,7 @@ def from_string(specifier: str, dryrun=False): git_url=url, install_method=install_method, dryrun=dryrun ) - target_and_args = specifier - if Package.split_req_install_method(target_and_args)[0] in INSTALL_METHODS: - target_and_args = Package.split_req_install_method(target_and_args)[1] + install_method, target_and_args = Package.split_req_install_method(specifier) # Handles a case like "torch --index-url https://download.pytorch.org/whl/cu113" rel_target, args = ( @@ -438,30 +436,20 @@ def from_string(specifier: str, dryrun=False): else: target = rel_target - if specifier.startswith("local:"): - return Package(install_target=target, install_method="local", dryrun=dryrun) - elif specifier.startswith("reqs:"): + # "Local" install method is a special case where we just copy a local folder and add to path + if install_method == "local": return Package( - install_target=target, - install_args=args, - install_method="reqs", - dryrun=dryrun, + install_target=target, install_method=install_method, dryrun=dryrun ) - elif specifier.startswith("pip:"): - return Package( - install_target=target, - install_args=args, - install_method="pip", - dryrun=dryrun, - ) - elif specifier.startswith("conda:"): + + elif install_method in ["reqs", "pip", "conda"]: return Package( install_target=target, install_args=args, - install_method="conda", + install_method=install_method, dryrun=dryrun, ) - elif specifier.startswith("rh:"): + elif install_method == "rh": # Calling the factory method below return package(name=specifier[len("rh:") :], dryrun=dryrun) else: