Python 结构无法在函数中导入模块

Python 结构无法在函数中导入模块,python,import,module,fabric,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的模块” 但是如果我将“from resource.php.git impo

这是我的结构脚本的摘录

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的模块”

但是如果我将“from resource.php.git import gitignore”移到函数之外,它就可以工作了。有什么想法吗? resource.php.git的每一层都有
\uuu init\uuuu.py

resource/php/中有git.py:

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

您遇到了名称空间冲突

您无法命名目录
resource
,因为有一个名为
resource
的标准python模块

因此,当您从资源中声明
时…
一切都会变得一团糟。Python找不到
php.git
,因为实际上,在标准的
resource
Python模块中没有这样的功能

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

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


还请确保您的
myresource
目录中有一个
\uuuu init\uuuu.py
文件。

您的resource/php/git目录中有什么?它实际上是一个python模块吗?是的,它实际上是一个python模块。那么在git.py中,什么是gitignore?我用你的目录结构创建了一个新项目,并为我工作。是的,这很奇怪,我认为这是因为结构…是的。由于您的
git.py
位于
resource/php/nginx
目录中,因此您需要从resource.php.nginx.git导入gitignore,并且在
resource/php
中还有一个
git
目录?如果是这样的话,您就有了名称空间冲突。您应该将
git.py
文件重命名为其他文件,或者将
git
目录(包含自己的
\uuuuuu init\uuuuu
文件)重命名为其他文件。不是resource/php/中的git目录,只需将git.py和
\uuu init\uuuuuuuuuuu.py
算出它。您与标准python模块存在命名空间冲突。答案已更新。但我已尝试将资源重命名为res,但仍然存在问题。我想是因为布料的缘故