我的python以某种方式在同一目录中找不到任何模块.我究竟做错了什么?(python2.7)
所以我有一个目录'2014_07_13_test',里面有两个文件:
其中hello.py:
# !/usr/local/bin/python
# -*- coding: utf-8 -*-
def hello1():
print 'HelloWorld!'
Run Code Online (Sandbox Code Playgroud)
和test.py:
# !/usr/local/bin/python
# -*- coding: utf-8 -*-
from hello import hello1
hello1()
Run Code Online (Sandbox Code Playgroud)
仍然python给了我
>>> Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<string>", line 4, in <module>
ImportError: No module named hello
Run Code Online (Sandbox Code Playgroud)
怎么了?
jfn*_*jfn 68
将test.py中的导入更改为:
from .hello import hello1
Run Code Online (Sandbox Code Playgroud)
Jer*_*len 62
你的代码很好,我怀疑你的问题是你如何启动它.
您需要从'2014_07_13_test'目录启动python.
打开命令提示符并'cd'进入'2014_07_13_test'目录.
例如:
$ cd /path/to/2014_07_13_test
$ python test.py
Run Code Online (Sandbox Code Playgroud)
如果你不能'cd'进入这样的目录,你可以将它添加到sys.path
在test.py中:
import sys, os
sys.path.append('/path/to/2014_07_13_test')
Run Code Online (Sandbox Code Playgroud)
或者设置/编辑PYTHONPATH
一切都应该好......
......你的'shebang'线(你的文件中的第一行)有一个小错误,'#'和'!'之间不应该有空格.
有一个更好的家当,你应该使用.
此外,您不需要每个文件上的shebang行...只有您打算从shell运行的文件作为可执行文件.
小智 15
我有类似的问题,我通过显式添加文件的目录到路径列表解决了它:
import os
import sys
file_dir = os.path.dirname(__file__)
sys.path.append(file_dir)
Run Code Online (Sandbox Code Playgroud)
之后,我从同一目录导入没有问题.
这是我使用的通用解决方案.它解决了从同一文件夹中的模块导入的问题:
import os.path
import sys
sys.path.append(os.path.join(os.path.dirname(__file__), '..'))
Run Code Online (Sandbox Code Playgroud)
把它放在模块的顶部,给出错误"没有名为xxxx的模块"