mirror of
https://github.com/clearml/clearml
synced 2025-03-04 02:57:24 +00:00
Add requirements file support in Task.add_requirements (#575)
This commit is contained in:
parent
a8fbe51231
commit
5e43a74c7b
@ -1841,14 +1841,27 @@ class Task(IdObjectBase, AccessMixin, SetupUploadMixin):
|
|||||||
Example: Task.add_requirements('tensorflow', '>=2.4')
|
Example: Task.add_requirements('tensorflow', '>=2.4')
|
||||||
Example: Task.add_requirements('tensorflow') -> use the installed tensorflow version
|
Example: Task.add_requirements('tensorflow') -> use the installed tensorflow version
|
||||||
Example: Task.add_requirements('tensorflow', '') -> no version limit
|
Example: Task.add_requirements('tensorflow', '') -> no version limit
|
||||||
|
Alternatively, you can add all requirements from a file.
|
||||||
|
Example: Task.add_requirements('/path/to/your/project/requirements.txt')
|
||||||
|
|
||||||
:param str package_name: The package name to add to the "Installed Packages" section of the task.
|
:param str package_name: The package name or path to a requirements file
|
||||||
|
to add to the "Installed Packages" section of the task.
|
||||||
:param package_version: The package version requirements. If ``None``, then use the installed version.
|
:param package_version: The package version requirements. If ``None``, then use the installed version.
|
||||||
"""
|
"""
|
||||||
if not running_remotely() and hasattr(cls, 'current_task') and cls.current_task():
|
if not running_remotely() and hasattr(cls, "current_task") and cls.current_task():
|
||||||
get_logger('task').warning(
|
get_logger("task").warning("Requirement ignored, Task.add_requirements() must be called before Task.init()")
|
||||||
'Requirement ignored, Task.add_requirements() must be called before Task.init()')
|
if not os.path.exists(package_name):
|
||||||
cls._force_requirements[str(package_name)] = package_version
|
cls._force_requirements[package_name] = package_version
|
||||||
|
return
|
||||||
|
try:
|
||||||
|
import pkg_resources
|
||||||
|
except ImportError:
|
||||||
|
get_logger("task").warning("Requirement file %s skipped since pkg_resources is not installed" % package_name)
|
||||||
|
else:
|
||||||
|
with Path(package_name).open() as requirements_txt:
|
||||||
|
for req in pkg_resources.parse_requirements(requirements_txt):
|
||||||
|
if req.marker is None or pkg_resources.evaluate_marker(str(req.marker)):
|
||||||
|
cls._force_requirements[req.name] = str(req.specifier)
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def ignore_requirements(cls, package_name):
|
def ignore_requirements(cls, package_name):
|
||||||
|
Loading…
Reference in New Issue
Block a user