python - windows pycharm 程序参数中未评估的环境变量
问题描述
尝试通过 pycharm 运行数据流快速入门示例中的 wordcount.py 示例,但在解析包含环境变量的命令行参数时遇到了问题。
当我设置环境变量并在终端中使用相同的参数运行脚本时,它工作得很好:
python wordcount.py --input gs://dataflow-samples/shakespeare/kinglear.txt --output gs://%BUCKET%/wordcount/outputs --runner DataflowRunner --project %PROJECT% --temp_location gs://%BUCKET%/tmp/
我尝试了以下解析环境变量的变体 - 没有一个有效:${ENV}、$ENV$、%ENV%。
我正在使用 Windows 10,PyCharm 版本 2019.3.1。
解决方案
当您将环境变量作为参数(例如,)的值传递--project
给--temp_location
Pycharm 配置时,它将这些变量作为“字符串”值而不是您在第一个屏幕截图“用户环境变量”中设置的真实值。我在 StackOverflow 上快速搜索了许多相关线程,但没有找到解决方案,所以我想出了自己的解决方案,即使用您当前的设置并在解析代码中的参数后替换值:
# Args parsing here
if args.project == "${PROJECT}":
args.project = os.environ.get("PROJECT")
args.temp_location = args.temp_location.replace("${BUCKET}", os.environ.get("BUCKET"))
但是,我认为您应该考虑在何时使用它
- 你使用 PyCharm 比使用终端更频繁。
- 有许多参数引用环境变量,您必须针对不同的设置更改它们的值。
希望 Pycharm 能尽快支持这个功能。
推荐阅读
- arrays - 从输入中找到最短的线 (C)
- javascript - 在 Jquery 中记录 $(this).val()
- android - 如何访问 Firebase 方法内部的变量?
- php - PHP JSON 使用 & 而不是 & 回显 URL
- python - 在for循环的每次迭代中动态更改变量?
- grep - 如何使用 grep for Windows 获取文本文件中第一个匹配项的第一部分?
- node.js - 在nodejs中以正确的方式读写typedArray
- python - asyncio 任务仅在调用 asyncio.sleep 后启动
- python - Python Logging 模块 - 记录器未登录正确的级别
- python - 具有滚动平均值的数据透视表