没有扩展的python文件工作,但.py扩展无法导入我的模块

时间:2011-03-23 01:18:17

标签: python

我的python文件在C:\ Python27 \ Lib \ site-packages下有“from .. import”语句到包。
如果我的文件名没有任何扩展名(例如foo),那么“python foo”可以工作。
如果我将文件从foo重命名为foo.py,则foo.py中的“from ... import”语句将失败:

try:
    from my_package.System.prefix import ...
except ImportError:
    print "ERROR: Could not import modules."

我有:
 PYTHONPATH = C:\ Python27 \ Lib \ site-packages
 环境:Windows XP / Python 2.7

1 个答案:

答案 0 :(得分:1)

我将在这里猜测:您的文件名是否与您尝试导入的包相同(在您的示例中为my_package)?

通过创建包含import语句django.py的文件from django.db import models,我能够重现与您描述的行为类似的行为。当我运行python django.py时,我得到ImportError: No module named db。当我将代码移动到名为django的文件(没有.py扩展名),删除django.pyc文件并运行python django时,导入成功。

为什么Python尝试导入django模块,它首先在包含正在执行的程序的目录中查找django.py文件。在第一种情况下,它会导入我创建的django.py文件,而不是django中安装的site-packages模块。在第二种情况下,我重命名了我的文件django,Python无法在与我的文件相同的目录中找到django.py,因此它从django正确导入site-packages