Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
启动脚本以从Python导出环境变量_Python_Bash_Environment Variables - Fatal编程技术网

启动脚本以从Python导出环境变量

启动脚本以从Python导出环境变量,python,bash,environment-variables,Python,Bash,Environment Variables,我正在尝试删除应用程序中的所有密码和机密。 为此,我使用了环境变量。我希望避免将这些特定内容放入~/.bashrc或其他内置文件中。最好调用导出所需变量的特定脚本 这是因为环境变量包含密码,我试图将它们隔离在所有代码之外,设置环境变量的环境脚本除外 总结所需流程: 启动Python应用程序 应用程序生成设置新环境变量的进程 应用程序从以前设置的环境变量中提取值 应用程序在进一步处理中使用这些值 testpy.py的内容 /tmp/env_文件的内容 我在其他stackoverflow线程上找到了

我正在尝试删除应用程序中的所有密码和机密。

为此,我使用了环境变量。我希望避免将这些特定内容放入
~/.bashrc
或其他内置文件中。最好调用导出所需变量的特定脚本

这是因为环境变量包含密码,我试图将它们隔离在所有代码之外,设置环境变量的环境脚本除外

总结所需流程:

  • 启动Python应用程序
  • 应用程序生成设置新环境变量的进程
  • 应用程序从以前设置的环境变量中提取值
  • 应用程序在进一步处理中使用这些值
  • testpy.py的内容

    /tmp/env_文件的内容

    我在其他stackoverflow线程上找到了各种方法,比如
    subprocess.Popen
    命令,但似乎都不起作用

    我想避免的备选方案:

    • 首先运行env_文件脚本,然后启动python代码。我们的目标是从一个应用程序运行它

    • 将密码放入配置文件。目标是环境变量。我想保留的配置文件指向要调用的变量,而不是设置env变量本身。这是因为配置文件已签入源代码管理。我想在源代码管理之外省去的唯一一件事是实际的
      export
      环境变量本身,它包含所有敏感的环境信息


      • 有一个更简单的方法。只需提供一个包装器脚本来设置环境变量,然后调用主脚本


        为此,使用
        envdir
        实用程序很方便。如果出于某种原因不能使用它,那么直接使用
        os.environ
        设置env vars,并将主脚本作为子进程生成

        进程的父进程永远看不到对环境变量的更改,因此您想做的事情无法工作。我想我必须在主应用程序运行之前在其他地方设置环境。我需要一个与语言无关的工作流程来处理这类事情,听起来只有在应用程序启动之前(而不是启动期间)设置用户环境配置文件才是唯一的方法。谢谢您提供的信息。我认为包装它将是唯一的方法。问题是,对于我的团队来说,这只是一种“概念验证”方法,因为我的任务是开发一种对代码隐藏秘密的方法。该团队在我们的应用程序中使用node.js、Python和Java,并希望找到一种统一的方法来跨所有应用程序执行此操作,这使得
        envdir
        成为不可能。
        envdir
        是一个命令行应用程序,可用于启动您提到的任何环境。到处都能用,谢谢。我正在阅读它,它看起来像一个Python pip包,但我看到它只是一个端口。非常感谢。如果没有其他弹出消息,我会在一两天内将此标记为已接受的答案。
        envdir
        工作正常。将此标记为答案这是一个很好的工具。请参见
        envshell
        envaccour
        ,了解不同部署模型中的相同想法。
        #!/usr/bin/env python
        
        import os
        import subprocess
        
        env_file='/tmp/env_file'
        db_pass_var='DBPASS'
        
        #execute bash script that sets the env vars
        subprocess.call([".", env_file], shell=True)
        
        #try to get the variable set and print it
        print os.getenv(db_pass, 'fail')
        
        #!/usr/bin/env bash
        
        export DBUSER="myuser"
        export DBPASS="mypass"