【问题标题】:How to make setup.py install a different module如何让 setup.py 安装不同的模块
【发布时间】:2013-03-12 18:03:04
【问题描述】:

我想使用distutils (setup.py) 来安装python 包(来自本地存储库),这需要来自不同本地存储库的另一个包。由于我缺乏关于setup 命令的体面文档(我只找到了一些示例 herehere,被 setup-terms extras_requireinstall_requiredependency_links 弄糊涂了,发现 herehere),有没有人有完整的 setup.py 文件来说明如何做到这一点被处理,即distutils 处理在某些 SVN 存储库中找到的包的安装,当我现在安装的主包需要它时?

更详细的解释:我有两个本地svn(或git)存储库basicmoduleextendedmodule。现在我结帐extendedmodule 并运行python setup.py install。这个setup.py 文件知道extendedmodule 需要basicmodule,并自动从存储库下载并安装它(以防它尚未安装)。我怎样才能用setup.py 解决这个问题?或者也许还有另一种更好的方法来做到这一点?


编辑:后续问题

根据 Tom 的回答,我尝试使用 setup.py,如下所示:

from setuptools import setup
setup(
    name = "extralibs",
    version = "0.0.2",
    description = ("Some extra libs."),
    packages=['extralib'],
    install_requires = "basiclib==1.9dev-r1234",
    dependency_links = ["https://source.company.xy/svn/MainDir/SVNDir/basiclib/trunk@20479#egg=basiclib-1.9dev-r1234"]

)

当尝试以普通用户身份安装时,我收到以下错误:

error: Can't download https://source.company.xy/svn/MainDir/SVNDir/basiclib/trunk@20479: 401 Authorization Required

但是当我使用完全相同的链接进行正常的svn 结帐时,它可以工作:

svn co https://source.company.xy/svn/MainDir/SVNDir/basiclib/trunk@20479

任何建议如何在不更改 svn 存储库的任何配置的情况下解决这个问题?

【问题讨论】:

    标签: python python-2.7 package setuptools


    【解决方案1】:

    我认为问题在于您的 svn 客户端经过身份验证(在 ~/.subversion 目录中的某处缓存领域)您的 distutils http 客户端不知道该怎么做。

    Distutils 在依赖链接中支持 svn+http 链接类型。因此,您可以尝试在提供用户名和密码的依赖链接之前添加“svn+”:

    dependency_links = ["svn+https://user:password@source.company.xy/svn/MainDir/SVNDir/basiclib/trunk@20479#egg=basiclib-1.9dev-r1234"]

    出于安全原因,您不应将用户名和密码放在 setup.py 文件中。一种方法是从环境变量或事件中获取身份验证信息,尝试从您的 subversion 配置目录 (~/.subversion) 中获取它

    希望有所帮助

    【讨论】:

      【解决方案2】:

      查看这两个问题的答案。他们都给出了关于install_requiresdependency_links 如何协同工作以实现您想要的具体示例。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-02-06
        • 1970-01-01
        • 2023-03-17
        • 2013-04-04
        • 1970-01-01
        • 2016-05-06
        相关资源
        最近更新 更多