> For the complete documentation index, see [llms.txt](https://docs.builtoncement.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.builtoncement.com/additional-topics/pipenv.md).

# 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
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## 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, and the optional `goal` query parameter:

```
GET https://docs.builtoncement.com/additional-topics/pipenv.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

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.
