# Requirements files

The older method of defining requirements is still available, and is present in the majority of Skills available in the Marketplace. This uses a `requirements.txt` and/or `requirements.sh` file.

## requirements.txt

The `requirements.txt` file can only be used to define Python package dependencies. It uses the [standard Python PIP format](https://pip.readthedocs.io/en/1.1/requirements.html) to list Python packages from [PyPI](https://pypi.org/) to install. Each line in the file represents a separate package to install and must match the title provided by PyPI.

The following example will install the latest available versions of the [`requests`](https://pypi.org/project/requests/) and [`gensim`](https://pypi.org/project/gensim/) packages.

```
requests
gensim
```

If specific versions of a package are required, we can use comparison operators to indicate which version.

* `requests==2.22.0` The package must must be version `2.22.0`.
* `requests>=2.22.0` The package must be version `2.22.0` or higher.
* `requests<=2.22.0` The package must be version `2.22.0` or lower.

It is strongly recommended to only use these operators when required. If submitting a Skill to the Marketplace, you will be asked to provide reasoning as to why a specific version of a package is necessary.

### Examples of requirements.txt

* [Weather Skill](https://github.com/MycroftAI/skill-weather/blob/19.08/requirements.txt)
* [Wiki Skill](https://github.com/MycroftAI/skill-wiki/blob/19.08/requirements.txt)

## requirements.sh

The `requirements.sh` file may contain a shell script that is run during installation of the Skill. Shell scripting is beyond the scope of these documents, however there are many tutorials available online.

Prior to the `manifest.yml` file, this was the only method available to install system packages. If you are only installing packages, using the [`manifest.yml`](/docs/skill-development/skill-structure/dependencies/manifest-yml.md) file instead is recommended.

The contents of this file will be checked carefully if a Skill is submitted for inclusion in the [Skills Marketplace](https://market.mycroft.ai)

### Examples of requirements.sh

* [Zork (adventure game)](https://github.com/forslund/white-house-adventure/blob/6eba5df187bc8a7735b05e93a28a6390b8c6f40c/requirements.sh)


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://mycroft-ai.gitbook.io/docs/skill-development/skill-structure/dependencies/requirements-files.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
