python - 可以访问我的环境变量 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
解决方案
这解决了我的问题:
当您在 ~/.bashrc 中定义一个变量时,该变量将在 ~/.bashrc 被“获取”(读取)后立即出现。这只发生在您启动一个新的 shell 时(例如,当您打开一个新终端时)。
因此,如果您将新行添加到您的 .bashrc 文件中,您将需要打开一个新终端并在那里运行您的 python 脚本。或者,您可以运行 source ~/.bashrc 将其源到当前 shell。
推荐阅读
- ios - 如果已安装,如何重定向到 Google 地图,否则如何重定向到 Appstore 以使用 Swift 安装 Google 地图
- java - 如何在另一个活动的 GraphView 中将 SQLite db 中的日期显示为 X 轴,仅显示 1-1-1970?
- asp.net-core-mvc - Azure App Service 最近开始抛出错误:无法加载文件或程序集 'Microsoft.EntityFrameworkCore, Version=2.1.4.0
- c# - 带有 F# 的 Swashbuckle:System.InvalidOperationException:'无法找到所需的服务
- javascript - 什么是 setTimeout 的最佳替代品以使窗口完全加载?
- python - Django 独特的一起组合
- python - 在 rust-cpython 中将 Rust 结构放入 PyObject
- html - Div 宽度不会随缩放图像调整大小
- angular - 错误 TS2540:无法分配给“i”,因为它是常量或只读属性
- go - Go 1.11 忽略了 `vendor` 目录,错误给人的印象是该目录甚至从未被查看过