【问题标题】:Python setuptools: How can I add a private repository (gitlab) in my setup.py?Python setuptools:如何在 setup.py 中添加私有存储库(gitlab)?
【发布时间】:2021-12-29 18:01:07
【问题描述】:

我在我的 gitlab 存储库中上传了 2 个包,如果我想使用 pip 在我的系统中安装它们,这很容易,因为 gitlab 可以帮助你:

https://docs.gitlab.com/ee/user/packages/pypi_repository/index.html

pip install <package-name> --extra-index-url https://<username>:<your_personal_token>@gitlab.com/api/v4/projects/<project ID>/packages/pypi/simple

这两个包的名称:

  • core_1
  • service_1

我想要的是创建其他包下载这两个私有包,我需要在 setup.py 中进行配置:

这是我的 setup.py

from setuptools import setup, find_packages

setup(
name='my_project',
version='0.1.0',
packages=find_packages(),
package_data = {
    'config':['*.yaml']
    },
include_package_data=True,
install_requires=[
    'click', 
    'colorama',
    'core_1 --extra-index-url https://joelbarrantespalacios:<personal_token>@gitlab.com/api/v4/projects/<project_ID>/packages/pypi/simple',
    'service_1 --extra-index-url https://joelbarrantespalacios:<personal_token>@gitlab.com/api/v4/projects/<project_ID>/packages/pypi/simple'
],
entry_points={
    'console_scripts': [
        'darit = core_project.cli:start',
    ],
},

)

当然, 需要添加,但我不给你,因为它是一个私人包。

joelbarrantespalacios:这是我的用户名

这是我在 setuptools 的文档中找到的,它展示了如何创建不在 PyPI 中的依赖项,但我不清楚

https://setuptools.pypa.io/en/latest/userguide/dependency_management.html

我真的需要你们的帮助,给我一些希望。

【问题讨论】:

    标签: python python-3.x installation gitlab package


    【解决方案1】:

    您应该将索引/身份验证信息添加到pip.cfg 文件或~/.pypirc 文件中。

    使用~/.pypirc 文件:

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

    其中&lt;token&gt; 是具有 API 范围的 API 令牌。或者,在安装包时将索引/身份验证信息提供给pip

    您的setup.py 依赖项应该简单地声明包的名称。例如

    # ...
    install_requires=[
        'core_1',
        'service_1',
    #...
    

    pip 将自动从您的pip.cfg.pypirc 文件(或pip CLI 选项)中配置的注册表中解析它。

    您的setup.py 在上传到注册表并由其用户下载时与您的包捆绑在一起,因此它显然不应该包含您的密码/令牌等敏感信息!

    【讨论】:

    • 是的,当我问这个问题时,我犯了一个错误,因为我试图安装在我的系统中编译的'my_project',我希望它安装 core_1 和 service_1,当然我没有将“my_project”上传到 PyPI。之后,我将“my_project”上传到 PyPI,然后它只安装了 core_1 和 service_1。 PD:我们需要在 setup.py install_requires=[ 'core_1', 'service_1']
    猜你喜欢
    • 2013-08-04
    • 2015-07-24
    • 2019-02-20
    • 2015-06-24
    • 2014-08-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多