当前位置: 首页 > 面试题库 >

Python setuptools:如何在install_requires下列出私有存储库?

邢凌
2023-03-14
问题内容

我正在setup.py为依赖私有GitHub存储库的项目创建文件。文件的相关部分如下所示:

from setuptools import setup
setup(name='my_project',
    ...,
    install_requires=[
        'public_package',
        'other_public_package',
        'private_repo_1',
        'private_repo_2',
    ],
    dependency_links=[
        'https://github.com/my_account/private_repo_1/master/tarball/',
        'https://github.com/my_account/private_repo_2/master/tarball/',
    ],
    ...,
)

我使用setuptools而不是distutils因为后者不支持此答案的install_requiresdependency_links参数。

上述设置文件无法访问私有存储库,并显示404错误-
这是可以预期的,因为GitHub将404返回给未经授权的私有存储库请求。但是,我不知道如何进行setuptools身份验证。

这是我尝试过的一些方法:

  1. 如果使用git+ssh://来安装仓库,请使用而不是https://in 。这会失败,因为setuptools无法识别此协议(“未知的url类型:git + ssh”),尽管分发文档说可以。同上和。dependency_links``pipgit+https``git+http

  2. https://<username>:<password>@github.com/...-仍然获得了404(此方法不工作,curl或者wget在命令行或者-尽管curl -u <username> <repo_url> -O <output_file_name>不工作。)

  3. 将setuptools(0.9.7)和virtualenv(1.10)升级到最新版本。也尝试安装分发,尽管此概述说它已合并回setuptools。无论哪种方式,都没有骰子。

目前,我只是setup.py打印出一条警告,指出必须单独html" target="_blank">下载私有存储库。这显然不理想。我觉得似乎有些明显的东西我不见了,但是无法想像是什么。:)


问题答案:

我试图使它能与pip一起安装,但以上内容对我而言不起作用。从[1]我理解PEP508应该使用该标准,从[2]我检索了一个确实有效的示例(至少对我而言)。

请注意; 这与pip 20.0.2Python 3.7.4

setup(
    name='<package>',
...
    install_requires=[
        '<normal_dependency>',
         # Private repository
        '<dependency_name> @ git+ssh://git@github.com/<user>/<repo_name>@<branch>',
         # Public repository
        '<dependency_name> @ git+https://github.com/<user>/<repo_name>@<branch>',
    ],
)

在以这种方式指定我的软件包后,安装可以正常工作(也可以使用-e设置,而无需指定--process-dependency-links)。

参考文献 [1]
https://github.com/pypa/pip/issues/4187
[2]
https://github.com/pypa/pip/issues/5566



 类似资料:
  • 我正在为一个依赖于私有GitHub存储库的项目创建文件。文件的相关部分如下所示: 我使用而不是,因为后者不支持以下答案中的和参数。 上面的安装文件无法访问私有Repo,出现404错误-这是意料之中的,因为GitHub将404返回给对私有存储库的未经授权的请求。但是,我不知道如何使进行身份验证。 > 在中使用

  • 问题内容: 我正在寻找一种方法来列出在Informix上运行的数据库中的所有存储过程。 数据库中是否有表格列出存储过程以及有关存储过程的详细信息? 问题答案: 就在这里。叫做。尝试此操作以查看所有内容:

  • 我有一个Amazon S3存储桶,所有设置都处于默认模式。当我转到我的Bucket权限选项卡并查看Public access/Everyone部分时,所有选项都为空,因此所有内容都是私有的。 现在我制作一个带有很长随机sha1-hash的文件夹,我在这个文件夹中上传一些文件和子文件夹,并将整个文件夹公开。是否可以检测(列出)此文件夹? 看起来不错。但也许还有其他方法可以检测我的公用文件夹?

  • 问题内容: 我正在使用该方法在Go中生成私钥/公钥对。我想将私钥存储在用户计算机上的文件中,并在程序启动时将其加载。有一种封送公钥的方法,但没有封送私钥的方法。我应该简单地自己滚动还是有推荐的存储私钥的方法? 问题答案: 这是一个代码示例,演示了Go中密钥的编码和解码。知道您需要连接几个步骤会有所帮助。加密算法是第一步,在这种情况下为ECDSA密钥。然后,您需要标准编码,x509是最常用的标准。最

  • 问题内容: 我无法从私有Docker Hub存储库中拉到在Vagrant上运行的本地Kubernetes设置中: 容器“ hellonode-n1hox”中的容器“ hellonode”正在等待启动:无法提取图像 无法提取图像“用户名/ hellonode”:错误:找不到图像用户名/ hellonode:最新 我已经按照此处所述通过Vagrant在本地设置了Kubernetes,并使用 kubec

  • 问题内容: 我有一个标记为的docker 映像,并且在dockerhub上有一个名为的私有仓库。 当我推动我的工作时,我最终总是会碰到公共仓库。 具体将我的图片推送到我的私人仓库的确切语法是什么? 问题答案: 您需要先使用正确标记图像: 然后码头工人使用相同的标签推。 例: