Python 在根目录中设置程序可访问的环境变量

Python 在根目录中设置程序可访问的环境变量,python,linux,unix,environment-variables,raspberry-pi,Python,Linux,Unix,Environment Variables,Raspberry Pi,当我的程序以root用户身份运行时,我遇到了一个找不到环境变量的问题。我目前的计划是: #!/usr/bin/python3 from i2clibraries import i2c_adxl345 #various other imports euid=os.geteuid() if euid != 0: args=['sudo',sys.executable]+sys.argv+[os.environ] os.exec

当我的程序以root用户身份运行时,我遇到了一个找不到环境变量的问题。我目前的计划是:

    #!/usr/bin/python3
    from i2clibraries import i2c_adxl345
    #various other imports

    euid=os.geteuid()
    if euid != 0:
        args=['sudo',sys.executable]+sys.argv+[os.environ]
        os.execlpe('sudo',*args)

    #rest of program
与环境变量一起,必要的文件位于该程序位于/home/pi/project test的目录中

当程序以root用户身份重新启动时,如何将环境变量设置为可访问?它们是:

    export QUICK2WIRE_API_HOME=~/project-test/quick2wire-python-api
    export PYTHONPATH=$PYTHONPATH:$QUICK2WIRE_API_HOME
在我的程序目录中进行这些导出可以修复以用户(pi)身份运行时的问题,但不能修复root用户。我可以修复上面的QUICK2WIRE\u API\u主位置,还是需要将所有库和程序加载到其他位置

注意:在中替换'sudo-E'或'sudo-E su'并不像我预期的那样携带环境变量集。顺便说一下,收到的实际错误是:

    ImportError: No module named quick2wire.i2c 
这就是环境变量设置路径的目的。此外,它必须以root用户身份运行,因为某些程序访问GPIO并以用户(pi)身份运行返回:

我也曾尝试过使用多处理或线程来分解它,但目前这两种方法都远远超出了我的理解范围,无法理解我需要包括什么以及在哪里设置函数、参数等

可以找到完整的程序

更新:我通过将所有相关文件重新下载到/root。仍然不希望接受位于/root中的quick2wire库。当前/root看起来像:

    .              .config         .gvfs        quick2wire-python-api
    ..             .dbus           i2clibraries .Xauthority
    .bash_history  .Desktop        .idlerc      .xsession-errors
    .bashrc        .gpio.sh        .local
    .cache         .gstreamer-0.10 .profile
i2c*和.quick*是从thinkbowl下载的两个库。当我表演时:

    env | grep quick2wire
在/root中,我得到:

    OLDPWD=/root/quick2wire-python-api
    QUICK2WIRE_API_HOME=/root/quick2wire-python-api
    PYTHON=$PYTHONPATH:$QUICK2WIRE_API_HOME:/root/quick2wire-python-api

由于您是在linux环境中执行此操作,请尝试将这些命令复制到/root/.bashrc文件中。这个文件将更新这些环境varsOk,我将这些命令添加到/root/.bashrc文件中:export QUICK2WIRE\u API\u HOME=~/QUICK2WIRE python API export python=$PYTHONPATH:$QUICK2WIRE\u API\u HOME以及将库从thinkbowl(包括我忘记的一个步骤)重新下载到/root中,它仍然给我错误。这篇文章更新了更多信息。非常感谢你!不要以root身份运行。。创建一个用户以其身份运行,并仅授予其所需的权限。Linux的设计目的不是让用户应用程序以root用户身份运行。这不是一个python问题,而是一个Linux问题。
    OLDPWD=/root/quick2wire-python-api
    QUICK2WIRE_API_HOME=/root/quick2wire-python-api
    PYTHON=$PYTHONPATH:$QUICK2WIRE_API_HOME:/root/quick2wire-python-api