尝试通过 pycharm 从数据流快速入门example 运行 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 配置时,它会将这些变量作为“string”值而不是您在第一个屏幕截图中设置的实际值“ 用户环境变量”。我在 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能尽快支持这个功能
试试这个:
if __name__ == '__main__':
args = (list(map(lambda x: os.environ.get(x.strip()[1:])
if x.strip().startswith('$')
or (x.strip().startswith('%') and x.strip().endsswith('%'))
else x, sys.argv[1:])))
它将接受任何以“$”开头或被“%”包围的运行配置输入,并尝试解析环境变量
它将接受从 PyCharm 传递的参数。