已安装的PATH Dependent导入通过CLI工作,而不是通过脚本

时间:2017-10-25 16:09:18

标签: python python-2.7 python-import nfs

我有一个名为user_module的python模块,它位于已安装的网络位置。

在我使用的脚本中,我需要导入该模块 - 但由于NFS问题,有时这条路径不可用,直到我们实际将目录更改为相关的路径和\或重新启动autofs服务

为了重现问题并尝试使用它 - 我手动停止了autofs服务,并试图用我的WA运行我的脚本 - (可能不是最优雅的一个):

import os
import sys
from subprocess import call

PATH="/some/network/path"
sys.path.append(PATH)

try:
    os.chdir(PATH)
    import user_module
except:
    print "Unable to load user_module, trying to restart autofs service"
    call(['service', 'autofs', 'restart'])
    os.chdir(PATH)
    import user_module         # Throws Import error!

但是,由于路径不可用,我仍然会导致导入错误。

现在我觉得这很奇怪 - 在同一台机器上,我尝试执行与我脚本相同的操作,故意预先停止autofs服务,并且它完美无缺 -

[root@machine]: service autofs stop     # To reproduce the import error
[root@machine]: python

>>> import os
>>> import sys
>>> from subprocess import call

>>> PATH="/some/network/path"
>>> sys.path.append(PATH)

>>> os.chdir(PATH)
######################################################################
################## exception of no such file or directory ############
######################################################################

>>> call(['service', 'autofs', 'restart'])
>>> os.chdir(PATH)             # No exception now after restarting the service
>>> import user_module         # NO Import error here

有人可以对情况有所了解 并向我解释为什么同样的方法通过python CLI工作,但通过脚本?

我不知道的是什么,或者我在这里失踪了什么? 另外 - 如何克服这个?

由于

0 个答案:

没有答案