导入模块的强制步骤是什么?
我是 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 ,我会得到相同的结果。
我在这里做错了什么?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
您应该确保导入正确的模块,而不是路径中其他位置具有相同名称的不同模块,
运行程序
尝试使用 python.exe -v SConstruct或
print mymodule 。 __file__ 就在
print mymodule.foo()
之前You should make sure that you are importing the correct module and not a different one with the same name somewhere else in your path
try running your program with
python.exe -v SConstruct
or
print mymodule.__file__
right beforeprint mymodule.foo()
当心路径操纵;麻烦会找上你的。
看看http://docs.python.org/tutorial/modules.html
我已经在下面设置了我认为您想要做的事情。这应该有效。
文件结构:
/custom_dir/__init__.py 为空
/custom_dir/mymodule.py:
/SConstruct.py:
Beware path manipulation; trouble will find you.
Take a look at http://docs.python.org/tutorial/modules.html
I've set up what I think you are trying to do below. This should work.
File structure:
/custom_dir/__init__.py is blank
/custom_dir/mymodule.py:
/SConstruct.py:
您可以从 SConstruct 以外的模块访问 SCons 类,例如环境,
请参阅文档 此处。
另外,不要使用“.”。要指示构建树的根,您应该使用
Dir('#' ).path
。You can access SCons classes, e.g. Environment from modules other than SConstruct by including
See the documentation here.
Also, rather than using '.' to indicate the root of the build tree, you should be using
Dir('#').path
.