导入模块的必要步骤是什么?

时间:2010-09-09 10:22:36

标签: python windows import module scons

我是python的新手,我遇到了一个问题:

我尝试扩展我的SConstruct文件并导入位于项目子目录中的模块。

这是我的SConstruct文件:

import os, sys
sys.path.append(os.path.abspath(os.path.join('.', 'custom_dir')))
import mymodule

mymodule.foo()

以下是mymodule.py文件,位于名为custom_dir的子目录中:

def foo():
  print 'foo'

我的__init__.py目录中还有一个custom_dir文件。

执行scons时:

  File ".\SConstruct", line 22, in <module>
    mymodule.foo()
AttributeError: 'module' object has no attribute 'foo'

如果我python.exe SConstruct我得到了相同的结果。

我在这里做错了什么?

3 个答案:

答案 0 :(得分:1)

您应该确保导入正确的模块,而不是路径中其他地方使用相同名称的其他模块

尝试使用python.exe -v SConstruct

运行您的程序

print mymodule.__file__

之前

print mymodule.foo()

答案 1 :(得分:1)

小心路径操纵;麻烦会找到你。

查看http://docs.python.org/tutorial/modules.html

我已经设置了我认为您在下面尝试做的事情。这应该有用。

文件结构:

/SConstruct.py
/custom_dir/
/custom_dir/__init__.py
/custom_dir/mymodule.py

/ custom_dir / __ init__.py为空

/custom_dir/mymodule.py:

def foo():
    print 'foo'

/SConstruct.py:

import custom_dir.mymodule as mymodule

mymodule.foo()

答案 2 :(得分:0)

您可以访问SCons类,例如来自SConstruct以外的模块的环境,包括

from SCons.Script import *

请参阅文档here

此外,而不是使用'。'要指示构建树的根,您应该使用Dir('#').path