我想使用distutils
(setup.py
)来安装python包(来自本地存储库),这需要来自不同本地存储库的另一个包。由于我缺乏setup
命令的正确文档(我只找到了一些例子
here和here混淆了setup
- 条款extras_require
,install_require
和dependency_links
找到here和here ),有没有人有一个完整的setup.py
文件,显示如何处理,即distutils
处理在某些SVN存储库中找到的软件包的安装,当我正在安装的主软件包现在需要那?
更详细的解释:我有两个本地的svn(或git)存储库basicmodule
和extendedmodule
。现在我结帐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存储库的任何配置的情况下解决此问题的任何建议?
答案 0 :(得分:0)
查看这两个问题的答案。他们都提供了有关install_requires
和dependency_links
如何协同工作以实现目标的具体示例。
答案 1 :(得分:0)
我认为问题在于您的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)
希望有帮助