GitLab PyPi Repository

原文:https://docs.gitlab.com/ee/user/packages/pypi_repository/

GitLab PyPi Repository

Introduced in GitLab Premium 12.10.

使用 GitLab PyPi 信息库,每个项目都可以有自己的空间来存储 PyPi 软件包.

GitLab PyPi 存储库可用于:

Setting up your development environment

您将需要最新版本的piptwine .

Enabling the PyPi Repository

注意:仅当您的 GitLab 管理员启用了对 Package Registry 的支持时,此选项才可用.

启用 PyPi 储存库后,默认情况下它将可用于所有新项目. 要为现有项目启用它,或者要禁用它:

  1. 导航到项目的"设置">"常规">"可见性,项目功能,权限" .
  2. 找到"软件包"功能并启用或禁用它.
  3. 单击保存更改以使更改生效.

然后,您应该能够在左侧栏中看到" 程序包和注册表"部分.

Getting started

本节将介绍如何创建一个新的示例 PyPi 包进行上传. 这是测试GitLab PyPi Registry的快速入门. 如果您已经了解如何构建和发布自己的软件包,请继续下一节 .

Create a project

了解如何创建完整的 Python 项目不在本指南的范围内,但是您可以创建一个小包来测试注册表. 首先创建一个名为MyPyPiPackage的新目录:

mkdir MyPyPiPackage && cd MyPyPiPackage 

创建此目录后,在其中创建另一个目录:

mkdir mypypipackage && cd mypypipackage 

在此目录中创建两个新文件以设置基本项目:

touch __init__.py
touch greet.py 

greet.py ,添加以下代码:

def SayHello():
    print("Hello from MyPyPiPackage")
    return 

__init__.py文件中,添加以下内容:

from .greet import SayHello 

现在,我们的项目基础已经完成,我们可以测试代码是否运行. 在顶部MyPyPiPackage目录中启动 Python 提示符. 然后运行:

>>> from mypypipackage import SayHello
>>> SayHello() 

您应该看到类似于以下内容的输出:

Python 3.8.2 (v3.8.2:7b3ab5921f, Feb 24 2020, 17:52:18)
[Clang 6.0 (clang-600.0.57)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> from mypypipackage import SayHello
>>> SayHello()
Hello from MyPyPiPackage 

验证示例项目是否按上述要求工作后,接下来就可以创建包了.

Create a package

在您的MyPyPiPackage目录中,我们需要创建一个setup.py文件. 运行以下命令:

touch setup.py 

该文件包含有关我们软件包的所有信息. 有关此文件的更多信息,请参见创建 setup.py . 对于本指南,我们不需要大量填写此文件,只需将以下内容添加到您的setup.py

import setuptools

setuptools.setup(
    name="mypypipackage",
    version="0.0.1",
    author="Example Author",
    author_email="author@example.com",
    description="A small example package",
    packages=setuptools.find_packages(),
    classifiers=[
        "Programming Language :: Python :: 3",
        "License :: OSI Approved :: MIT License",
        "Operating System :: OS Independent",
    ],
    python_requires='>=3.6',
) 

保存文件,然后执行如下设置:

python3 setup.py sdist bdist_wheel 

如果成功,您应该能够在新创建的dist文件夹中看到输出. 跑:

ls dist 

并确认您的输出与以下内容匹配:

mypypipackage-0.0.1-py3-none-any.whl mypypipackage-0.0.1.tar.gz 

现在,我们的软件包已全部设置好,可以上传到GitLab PyPi 软件包注册中心 . 在此之前,我们接下来需要设置身份验证.

Adding the GitLab PyPi Repository as a source

Authenticating with a personal access token

您将需要以下内容:

  • 个人访问令牌. 您可以生成范围设置为api个人访问令牌 ,以进行存储库身份验证.
  • 您的来源的合适名称.
  • 您的项目 ID,可以在项目的主页上找到.

编辑~/.pypirc文件并添加以下内容:

[distutils]
index-servers =
    gitlab

[gitlab]
repository = https://gitlab.com/api/v4/projects/<project_id>/packages/pypi
username = __token__
password = <your personal access token> 

Authenticating with a deploy token

您将需要以下内容:

  • 部署令牌. 您可以生成令牌部署read_package_registry和/或write_package_registry范围为存储库认证.
  • 您的来源的合适名称.
  • 您的项目 ID,可以在项目的主页上找到.

编辑~/.pypirc文件并添加以下内容:

[distutils]
index-servers =
    gitlab

[gitlab]
repository = https://gitlab.com/api/v4/projects/<project_id>/packages/pypi
username = <deploy token username>
password = <deploy token> 

Uploading packages

上载套件时,请注意:

  • 允许的最大大小为 50 MB.
  • 如果您多次上传具有相同版本的相同程序包,则每次连续上传都将保存为单独的文件. 安装软件包时,GitLab 将提供最新文件.

Upload packages with Twine

如果您按照上面的指南进行操作,则MyPyPiPackage软件包应已准备好上载. 运行以下命令:

python3 -m twine upload --repository gitlab dist/* 

如果成功,您应该看到以下内容:

Uploading distributions to https://gitlab.com/api/v4/projects/<your_project_id>/packages/pypi
Uploading mypypipackage-0.0.1-py3-none-any.whl
100%|███████████████████████████████████████████████████████████████████████████████████████████| 4.58k/4.58k [00:00<00:00, 10.9kB/s]
Uploading mypypipackage-0.0.1.tar.gz
100%|███████████████████████████████████████████████████████████████████████████████████████████| 4.24k/4.24k [00:00<00:00, 11.0kB/s] 

这表明该软件包已成功上传. 然后,您可以导航到项目的" 程序包和注册表"页面,并查看上载的程序包.

如果您没有遵循上述指南,则需要确保已正确构建软件包,并使用 setuptools 创建了 PyPi 软件包 .

然后,您可以使用以下命令上传软件包:

python -m twine upload --repository <source_name> dist/<package_file> 

Where:

Install packages

使用以下命令安装最新版本的软件包:

pip install --index-url https://__token__:<personal_access_token>@gitlab.com/api/v4/projects/<project_id>/packages/pypi/simple --no-deps <package_name> 

Where:

  • <package_name>是软件包名称.
  • <personal_access_token>是具有read_api范围的个人访问令牌.
  • <project_id>是项目 ID.

如果您遵循上面的指南,并且想测试安装MyPyPiPackage软件包,则可以运行以下命令:

pip install mypypipackage --no-deps --index-url https://__token__:<personal_access_token>@gitlab.com/api/v4/projects/<your_project_id>/packages/pypi/simple 

这将导致以下结果:

Looking in indexes: https://__token__:****@gitlab.com/api/v4/projects/<your_project_id>/packages/pypi/simple
Collecting mypypipackage
  Downloading https://gitlab.com/api/v4/projects/<your_project_id>/packages/pypi/files/d53334205552a355fee8ca35a164512ef7334f33d309e60240d57073ee4386e6/mypypipackage-0.0.1-py3-none-any.whl (1.6 kB)
Installing collected packages: mypypipackage
Successfully installed mypypipackage-0.0.1 
Copyright © 温玉 2021 | 浙ICP备2020032454号 all right reserved,powered by Gitbook该文件修订时间: 2021-03-27 13:48:25

results matching ""

    No results matching ""