Python can't find module in the same folder
我的python在同一个目录中找不到任何模块。我做错什么了?(Python 2.7)
所以我有一个目录"2014年测试",其中有两个文件:
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找不到它,因为我将代码放在一个带连字符的模块中,例如
我遇到了这个问题。我在同一个目录中有三个文件夹,所以我必须指定哪个文件夹。例如:从文件夹导入脚本