将路径添加到PYTHONPATH后,ImportError仍然存在

时间:2014-11-10 19:11:30

标签: python environment pythonpath sys.path

运行一些python代码时出现以下错误

追踪(最近一次通话):   文件“./dspl.py”,第4行,in     进口基地 ImportError:没有名为base

的模块

disp.py位于目录PERSISTENCE_LENGTH中,如下所示。 disp.py导入目录UTILS中的一些python脚本(如下所示)。我将导入目录(/ home / vinay / oxDNA)的路径添加到PYTHONPATH,即导出PYTHONPATH = $ {PYTHONPATH}:/ home / vinay / oxDNA /)。 UTILS目录中有一个正确的_init__.py文件。

disp.py位于以下目录中:/ home / vinay / oxDNA / EXAMPLES / PERSISTENCE_LENGTH

disp.py正在导入目录中的其他模块:/ home / vinay / oxDNA / UTILS

当我打印sys.path时,我可以看到PYTHONPATH没问题。如下所示 ['','/ home / vinay','/ home / vinay / oxDNA / UTILS','/ usr / lib / python2.7','/ usr / lib / python2.7 / plat-linux2',)< / p>

1 个答案:

答案 0 :(得分:-1)

如果您的模块位于目录中,而不是单个命名文件,则该目录必须具有__init__.py文件。此文件的存在使该目录成为一个模块,然后您可以从该模块加载,__init__.py可以为空,但您也可以在其中输入:

__all__ = ['component_name1', 'etc', 'etc']

如果您这样做,__all__中列出的名称将是from mondule_name import *后可用的名称

通常的做法是为目录命名,例如:`my_utils&#39;以及目录中的组件,例如:&#39; file_io.py&#39;然后,您可以访问file_io中的项目:

import my_utils
my_utils.file_io.functionA()

from my_utils import file_io
file_io.functionA()

from my_utils.file_io import functionA()
functionA()

请注意,在以上所有示例中,functionA可以访问file_io.py中的其他功能,如果file_io.py具有相应的导入,则访问my_utils中其他文件中的其他功能}。

同样重要的是要记住python 依赖于案例 即使在Windows