Python无法在同一文件夹中找到模块

Python can't find module in the same folder

我的python在同一个目录中找不到任何模块。我做错什么了?(Python 2.7)

所以我有一个目录"2014年测试",其中有两个文件:

  • Py
  • Helo.Py
  • Helo.Py:

    1
    2
    3
    4
    5
    # !/usr/local/bin/python
    # -*- coding: utf-8 -*-

    def hello1():
        print 'HelloWorld!'

    和测试

    1
    2
    3
    4
    5
    6
    # !/usr/local/bin/python
    # -*- coding: utf-8 -*-

    from hello import hello1

    hello1()

    还是Python给我的

    1
    2
    3
    4
    >>> Traceback (most recent call last):
      File"<stdin>", line 1, in <module>
      File"<string>", line 4, in <module>
    ImportError: No module named hello

    发生了什么?


    将test.py中的导入更改为:

    1
    from .hello import hello1


    您的代码很好,我怀疑您的问题是如何启动它。

    您需要从"2014年测试"目录启动python。

    打开一个命令提示符,并将"cd"插入"2014_07_13_test"目录。

    例如:

    1
    2
    $ cd /path/to/2014_07_13_test
    $ python test.py

    如果不能像这样将"cd"添加到目录中,可以将其添加到sys.path

    在Test.Py:

    1
    2
    import sys, os
    sys.path.append('/path/to/2014_07_13_test')

    或设置/编辑pythonpath

    一切都应该很好…

    …嗯,你的"shebang"行(两个文件的第一行)有一个小错误,"shebang"和"!"之间不应该有空格。

    有一个更好的shebang你应该使用。

    而且你不需要在每个文件上都加上shebang行…只有那些您打算从shell作为可执行文件运行的文件。


    我有一个类似的问题,我通过将文件的目录显式添加到路径列表来解决它:

    1
    2
    3
    4
    5
    import os
    import sys

    file_dir = os.path.dirname(__file__)
    sys.path.append(file_dir)

    在那之后,从同一目录导入没有问题。


    这是我使用的通用解决方案。它解决了从同一文件夹中的模块导入的问题:

    1
    2
    3
    import os.path
    import sys
    sys.path.append(os.path.join(os.path.dirname(__file__), '..'))

    将其放在模块顶部,该模块出现错误"没有名为XXXX的模块"。


    在我的例子中,python找不到它,因为我将代码放在一个带连字符的模块中,例如my-module。当我把它改成my_module时,它起作用了。


    我遇到了这个问题。我在同一个目录中有三个文件夹,所以我必须指定哪个文件夹。例如:从文件夹导入脚本