Fabric无法在功能中导入模块

时间:2013-03-19 00:39:18

标签: python import module fabric

这是我的结构脚本

的摘录
def create_php_site(name):
    """
    Creates a new php installation
    """

    from resource.php.git import gitignore
    from resource.php.nginx import nginx

当我运行它时,我收到错误“ImportError:没有名为php.git的模块”

但是如果我在函数之外移动“来自resource.php.git import gitignore”,它就可以了。有任何想法吗? resource.php.git的每一层都有__init__.py

资源/ php /中有git.py:

gitignore = """.DS_Store
._.DS_Store
"""

1 个答案:

答案 0 :(得分:0)

您正在遇到命名空间冲突。

无法命名您的目录resource,因为有一个名为resource的标准python模块 - http://docs.python.org/2/library/resource.html

所以当你宣布from resource...时,所有地狱都会破裂。 Python无法找到php.git,因为在标准的resource python模块中,确实没有这样的功能。

我创建了一个类似的示例,但是将resource目录重命名为myresource。执行导入然后完美地工作。像这样: -

>>> from myresource.php.git import gitignore
>>> gitignore
'my ignore strings'

重要

还请确保__init__.py目录中有myresource个文件。