在python中导出环境变量后导入无效

时间:2014-04-08 18:43:28

标签: python bash import pythonpath

在我的一个python脚本中,我在文件顶部使用import语句,如下所示。

import phx_commonlib.configuration.systemConfig as systemConfig

它将查找在〜/ .bashrc文件中设置的PYTHONPATH环境变量,并且当我从linux框上的bash shell运行时它正在导入文件。后来我使用putty连接到我的linux盒子,现在我的脚本因putty而失败,因为〜/ .bashrc文件无法获取。 所以我在脚本中导出了PYTHONPATH变量,如下所示。

def exportPythonPath():
    pwd = os.getcwd()

    pythonpath = ""

    scanPath_index = pwd.find('/phx_test/scan')
    if scanPath_index != -1:
        pythonpath = pwd[0:scanPath_index]
        pythonpath = pythonpath + ":/projects/phx/tools:/projects/phx/tools/pylib"
        os.environ["PYTHONPATH"] = pythonpath
        print os.environ["PYTHONPATH"]

我正在导入"将phx_commonlib.configuration.systemConfig导入为systemConfig"在函数内部设置PYTHONPATH之后(如果我在顶部保持导入,它将失败,因为它不会找到PYTHONPATH)。上面写的函数末尾的print语句是打印正确的PYTHONPATH环境变量。但仍然导入声明不起作用。它抛出的错误是" ImportError:没有名为phx_commonlib.configuration.systemConfig"的模块。

如果我直接从putty设置PYTHONPATH(而不是从脚本设置),如果我运行python脚本,它正在正确导入模块。任何人都可以让我知道脚本中的问题或如何进行导入。

1 个答案:

答案 0 :(得分:1)

您需要修改os.environ ,而不是在sys.path中设置PYTHONPATH,而不是:

import sys
sys.path.append(pythonpath)

然后继续使用import s。

os.environ中设置PYTHONPATH的原因不起作用是sys.path是解释器在执行import指令时引用的内容。

如果您设置PYTHONPATH环境变量然后启动解释器,它会看到它,将其添加到sys.path,然后继续。

如果启动没有PYTHONPATH env-var设置的解释器,则sys.path在启动时不会更新,os.environ['PYTHONPATH']中的新值(在解释器启动后设置)将是没用了。