如何制作设置.py安装不同的modu

2024-10-01 04:56:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我想使用distutilssetup.py)来安装python包(从本地存储库),这需要来自不同本地存储库的另一个包。由于我缺少setup命令的像样文档(我只找到了一些示例 here和{a2}被setup-术语extras_requireinstall_require和{}找到了{a3}和{a4}),有没有人有一个完整的setup.py文件来说明如何处理这个问题,例如,distutils处理在某个SVN存储库中找到的包的安装,而我现在正在安装的主包需要这样做?在

更详细的解释:我有两个本地svn(或git)存储库basicmodule和{}。现在我签出extendedmodule并运行python setup.py install。此setup.py文件知道extendedmodule需要{},并自动从存储库下载并安装(以防尚未安装)。如何使用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"]

尝试以普通用户身份安装时,出现以下错误:

^{pr2}$

但是,当我使用完全相同的链接执行正常的svn签出时,它会起作用:

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

有什么建议可以在不改变svn存储库配置的情况下解决这个问题吗?在


Tags: install文件pyhttpsdevsourcesetupsvn
2条回答

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

我认为问题是您的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"]

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

希望有帮助

相关问题 更多 >