代码之家  ›  专栏  ›  技术社区  ›  ereOn

导入模块的强制步骤是什么?

  •  0
  • ereOn  · 技术社区  · 15 年前

    我试着延长我的时间 SConstruct

    S结构

    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 文件在我的 自定义目录 目录。

    当我执行 scons :

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

    如果我这样做了 python.exe SConstruct 我得到了同样的结果。

    我做错什么了?

    3 回复  |  直到 15 年前
        1
  •  1
  •   John La Rooy    15 年前

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

    试着用 python.exe -v SConstruct

    print mymodule.__file__ 就在之前 print mymodule.foo()

        2
  •  1
  •   Chris Adams    15 年前

    小心路径操纵,麻烦会找上你的。

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

    文件结构:

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

    /自定义目录/\uuuu初始目录.py为空

    /自定义目录/我的模块.py:

    def foo():
        print 'foo'
    

    import custom_dir.mymodule as mymodule
    
    mymodule.foo()
    
        3
  •  0
  •   Codie CodeMonkey    13 年前

    您可以访问SCons类,例如从SConstruct以外的模块访问Environment,方法是包括

    from SCons.Script import *
    

    here .

    此外,不应使用“.”来指示生成树的根,而应使用 Dir('#').path .