# Pipenv

## Introduction to Pipenv

From the [Pipenv documentation](https://pipenv.pypa.io/en/latest/):

> **Pipenv** is a tool that aims to bring the best of all packaging worlds (bundler, composer, npm, cargo, yarn, etc.) to the Python world. *Windows is a first-class citizen, in our world.*
>
> It automatically creates and manages a virtualenv for your projects, as well as adds/removes packages from your `Pipfile` as you install/uninstall packages. It also generates the ever-important `Pipfile.lock`, which is used to produce deterministic builds.

{% hint style="info" %}
Cement maintainers do not currently use Pipenv, therefore this documentation is here as a helper. Future versions of Cement may include Pipenv configurations out-of-the-box (but do not currently).
{% endhint %}

## Installing Pipenv

Pipenv can be installed via Pip:

```
pip install pipenv
```

## Using Pipenv With Cement

First install Cement, and generate a project:

```bash
pip install cement

cement generate project ./myapp
```

In the generated `./myapp` directory:

```bash
### setup requirements

pipenv install -r requirements.txt


### setup requirements for dev

pipenv install -r requirements-dev.txt --dev
```

This will create the `Pipfile` and `./Pipfile.lock`. You will then need to modify `Pipfile` to include the application console script:

```
[scripts]
myapp = "python -m myapp.main"
```

Your app can then be run under `pipenv`:

```
pipenv run myapp --help
```

{% hint style="info" %}
You can then remove the `requirements.txt` and `requirements-dev.txt` if no longer needed.
{% endhint %}


---

# 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://docs.builtoncement.com/additional-topics/pipenv.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.
