【问题标题】:How to access set env variable in conanfile.py如何访问 conanfile.py 中的设置环境变量
【发布时间】:2021-09-07 15:11:43
【问题描述】:

当我使用conan create -e VAR=A . demo/testing 设置环境时。变量VAR=A,

如何访问conanfile.py 中设置的环境变量。变量VAR 不在os.environ 字典中。

我不能使用export VAR=A

import os
import sys
from conans import ConanFile


class BaseLibrary(ConanFile):
  name = "base-library"

  def set_version(self):
    print(os.environ) # does not work... why??
    self.version = "1.0.0"

【问题讨论】:

  • 你有一个 python 脚本,有什么问题? os.environ.get('VAR')?
  • os.environ 中未设置变量。尤其是当我在class MyProject(ConanFile)set_value 函数中使用os.environ 时。
  • 这没有帮助,因为 self.env_info 在set_version 中不可用。有点奇怪……

标签: c++ conan


【解决方案1】:

参数-e 是在包构建期间将设置的环境变量,即传递给编译器。您可以访问它,但在您的配方中的 build(self) 方法下。 create 命令参考对此进行了解释。因此,您无法在构建之前访问它。

由于您想在构建之前获取环境变量,因此正确的用法是使用tools.get_env,但您仍然不应该使用-e,它不会起作用。相反,您应该在命令之前作为常规环境变量传递:

PKG_VERSION=0.1.0 conan create . user/testing
from conans import ConanFile, tools

class BaseLibrary(ConanFile):
  name = "base-library"

  def set_version(self):
    self.version = tools.get_env("PKG_VERSION")

不过,您可以通过参数传递包版本,您不需要使用 env vars(也许您正在使用 CI 服务并且不想更改配置文件)。

conan create . base-library/0.1.0@user/testing

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-10-03
    • 1970-01-01
    • 1970-01-01
    • 2021-04-28
    • 1970-01-01
    • 2014-12-11
    • 1970-01-01
    • 2019-07-02
    相关资源
    最近更新 更多