【问题标题】:Trying to find the Git Branch a repo is on and pass it into a requirements.txt试图找到一个 repo 所在的 Git 分支并将其传递到 requirements.txt
【发布时间】:2019-11-21 22:07:50
【问题描述】:

我目前正在拆分我们的大型 BDD 项目并将测试代码移动到各种应用程序中,以便 BDD 测试和应用程序代码都在同一个位置。

作为其中的一部分,我为共享代码创建了一个库,并使用

将 requirements.txt 文件指向了这个库

-e git+git@gitlab.xx.xxx:xxxxxxxx/xxxxxxBDD.git@"branchID(例如develop)#egg=BehaveModules

目前我依赖于手动输入分支 ID,因此如果根据正在开发的代码分支对公共库进行更改,我需要记住更新分支 ID。

有没有办法解决这个问题,然后将其传递到我的 requirements.txt

例如

Application_branch = get current git branch
if Application_branch present in BDD_Library Repo:
    branch = Application_branch
else: 
    branch = Develop

return branch

-e git+git@gitlab.xx.xxx:xxxxxxxx/xxxxxxBDD.git@branch#egg=BehaveModules

【问题讨论】:

    标签: python requirements.txt


    【解决方案1】:

    您可以创建一个install.py 脚本并通过脚本调用pip,而不是在requirements.txt 中指定变量。

    import subprocess
    import sys
    
    _all_ = [
        "git+https://github.com/googleapis/python-ndb.git@{}#egg=google_cloud_ndb",
        "requests"
    ]
    
    latest_branch = 'master'
    
    
    def install(packages):
        for package in packages:
            if 'git+' in package:
                subprocess.call([sys.executable, "-m", "pip", "install", package.format(latest_branch)])
            else:
                subprocess.call([sys.executable, "-m", "pip", "install", package])
    
    
    if __name__ == '__main__':
        install(_all_)
    

    如果你愿意,你也可以使用pip,而不是subprocess

    import pip
    def install(packages):
        for package in packages:
            pip.main(['install', package])
    

    【讨论】:

      猜你喜欢
      • 2014-02-16
      • 2015-04-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-14
      • 2020-03-24
      相关资源
      最近更新 更多