首页 > 解决方案 > 可以访问我的环境变量 PYTHON、LINUX、click 命令,它在内部使用 curl 命令

问题描述

我编写了自己的 cmd 工具,并创建了一个 click cmd 来触发我的上传功能。在这个上传函数中,我做了一个人工部署调用。如果我用 pytest 测试这个功能,如果我通过 cmd 行测试它,它就找不到我的环境变量。

我已将这些添加到我的 .bashrc 和 pycharm 中作为 env var。

知道为什么它不能在命令行上运行。它说我的环境变量是无

我的主要:

def configure_click(entrypoint: click.Group = cli):
    entrypoint.add_command(deploy_log)
    return entrypoint

def main():
    entrypoint = configure_click(entrypoint=cli)
    entrypoint()


@click.command(context_settings=CLICK_CONTEXT_SETTINGS)
@click.option(
    '-u', '--storage-url',
    required=True,
    help='url of the artifactory repository',
    
@click.option(
    '-i', '--input_directory',
    required=True,
    help='Directory of the updated log',
)
def deploy_log(storage_url,input_directory):
    test_log = Log()
    test_log.upload_log(storage_url, input_directory)

日志类:

 def upload_log(self, artifactory_path, input_dir):

        TARGET_PATH = ('{}/test/log.zip'.format(artifactory_path))
        PATH_TO_FILE = 'log.zip'
        ARTIFACTORY_USER = os.getenv('ARTIFACTORY_USER')
        ARTIFACTORY_TOKEN= os.getenv('ARTIFACTORY_TOKEN')
        deploy_cmd = "curl --fail -u"+ARTIFACTORY_USER+":"+ARTIFACTORY_TOKEN+ " -T "+PATH_TO_FILE+" "+ TARGET_PATH
        os.system(deploy_cmd)

例外:

TypeError: must be str, not NoneType

标签: pythonlinuxenvironment-variables

解决方案


这解决了我的问题:

当您在 ~/.bashrc 中定义一个变量时,该变量将在 ~/.bashrc 被“获取”(读取)后立即出现。这只发生在您启动一个新的 shell 时(例如,当您打开一个新终端时)。

因此,如果您将新行添加到您的 .bashrc 文件中,您将需要打开一个新终端并在那里运行您的 python 脚本。或者,您可以运行 source ~/.bashrc 将其源到当前 shell。


推荐阅读