在我的一个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脚本,它正在正确导入模块。任何人都可以让我知道脚本中的问题或如何进行导入。
答案 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']
中的新值(在解释器启动后设置)将是没用了。