虚假错误消息是指程序的启动早已结束并且与当前活动无关。唯一将它们结合在一起的是,当解释器在另一个程序之前未成功启动的文件系统目录中启动时,会发出错误消息。例子:
- 在主文件夹中执行命令
- 我去tmp文件夹
- 我执行相同的命令 - 有一条错误消息。
这是清单:
$ cd
lary@dtk58:~$ python
Python 3.5.2 (default, Nov 23 2017, 16:37:01)
[GCC 5.4.0 20160609] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from socket import *
>>> exit()
lary@dtk58:~$ cd tmp
lary@dtk58:~/tmp$ python
Python 3.5.2 (default, Nov 23 2017, 16:37:01)
[GCC 5.4.0 20160609] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from socket import *
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/home/lary/tmp/socket.py", line 9, in <module>
mysock = socket(AF_INET, SOCK_STREAM)
NameError: name 'socket' is not defined
socket.py程序本身不再存在。很明显,问题出在某些缓存中……我清除了此目录中的pycache 文件夹- 它没有帮助。
您从
/home/lary/tmp/拥有socket.py. 当您尝试 import 时socket,您不是在导入标准库,而是在导入您的文件。此外,您在 tmp 中有一个文件,因此解释器甚至到达了第 9 行。
导入时,python首先在当前目录中查找文件,这就是你的文件被导入的原因。
PS 最好避免使用脚本的名称,这可能与标准库中的名称相同。