我是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
我得到了相同的结果。
我在这里做错了什么?
答案 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
。