# GitLab PyPi Repository **(PREMIUM)** > [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/208747) in [GitLab Premium](https://about.gitlab.com/pricing/) 12.10. With the GitLab PyPi Repository, every project can have its own space to store PyPi packages. The GitLab PyPi Repository works with: - [pip](https://pypi.org/project/pip/) - [twine](https://pypi.org/project/twine/) ## Setting up your development environment You will need a recent version of [pip](https://pypi.org/project/pip/) and [twine](https://pypi.org/project/twine/). ## Enabling the PyPi Repository NOTE: **Note:** This option is available only if your GitLab administrator has [enabled support for the Package Registry](../../../administration/packages/index.md). **(PREMIUM ONLY)** After the PyPi Repository is enabled, it will be available for all new projects by default. To enable it for existing projects, or if you want to disable it: 1. Navigate to your project's **Settings > General > Permissions**. 1. Find the Packages feature and enable or disable it. 1. Click on **Save changes** for the changes to take effect. You should then be able to see the **Packages** section on the left sidebar. ## Adding the GitLab PyPi Repository as a source You will need the following: - A personal access token. You can generate a [personal access token](../../../user/profile/personal_access_tokens.md) with the scope set to `api` for repository authentication. - A suitable name for your source. - Your project ID which can be found on the home page of your project. Edit your `~/.pypirc` file and add the following: ```ini [gitlab] repository = https://gitlab.com/api/v4/projects//packages/pypi username = __token__ password = ``` ## Uploading packages When uploading packages, note that: - The maximum allowed size is 50 Megabytes. - If you upload the same package with the same version multiple times, each consecutive upload is saved as a separate file. When installing a package, GitLab will serve the most recent file. - When uploading packages to GitLab, they will not be displayed in the packages UI of your project immediately. It can take up to 10 minutes to process a package. ### Upload packages with Twine This section assumes that your project is properly built and you already [created a PyPi package with setuptools](https://packaging.python.org/tutorials/packaging-projects/). Upload your package using the following command: ```shell python -m twine upload --repository dist/ ``` Where: - `` is your package filename, ending in `.tar.gz` or `.whl`. - `` is the [source name used during setup](#adding-the-gitlab-pypi-repository-as-a-source). ## Install packages Install the latest version of a package using the following command: ```shell pip install --index-url https://__token__:@gitlab.com/api/v4/projects//packages/pypi/simple --no-deps ``` Where: - `` is the package name. - `` is your personal access token. - `` is your project id number.