Python,不确定为什么当环境变量看起来正确时自定义导入不起作用

时间:2014-05-22 17:13:58

标签: python python-2.7 import path importerror

My Setup

我认为我所拥有的是正确的。我的计算机上只有一个版本的python。 Python 2.7.6。我构建了一组模块并将它们放入SILO3文件夹,然后将该文件夹放入C:\ Python27(在路径中),是的,由于某种原因,我无法从SILO3导入第一个(或任何)库。

我需要了解什么?我认为我的环境变量是正确的。

2 个答案:

答案 0 :(得分:0)

您将主脚本命名为 SILO3.py。 Python发现,首先,你必须重命名脚本,它会掩盖包。

你可以在你的追溯中看到这个; Desktop\SILO3.py已导入Desktop\SILO3.py,但本身未找到CheckTruth

Traceback (most recent call last):
  File "C:\Users\admin\Desktop\SILO3.py", line 10, in <module>
    from SILO3 import CheckTruth
  File "C:\Users\admin\Desktop\SILO3.py", line 10, in <module>
    from SILO3 import CheckTruth
ImportError: cannot import name CheckTruth

注意File行;他们确切地告诉你哪些代码触发了异常。 SILO3.py导入SILO3.py 位于完全相同的位置。例外情况告诉您,Python找到了 SILO3包或模块,但该位置的名称CheckTruth不可用。

您还可以通过询问导入的模块的文件位置来诊断它:

import SILO3
print SILO3.__file__

并验证导入的内容是您希望导入的内容。

答案 1 :(得分:0)

Python在sys.path中指定的路径中搜索模块。 %PATH%环境变量与模块搜索路径无关。

您可以使用%PYTHONPATH%环境变量指定自定义搜索路径。但是,这通常是没有必要的。

将您的模块放在与导入它的脚本相同的目录中。当前目录位于默认的python路径中。

即:

c:\some-folder\SILOV3.py
c:\some-folder\SILO3\
c:\some-folder\SILO3\__init__.py
c:\some-folder\SILO3\CheckTruth.py

另外,正如@Martijn Pieters所提到的,名为SILO3.py的文件是一个模块,因此如果您有一个具有相同名称的文件夹模块,您将无法导入它。