我一直在学习python,我的一个系统上的Python交互式shell存在问题。它在每个python-interactive-mode start(没有参数)上运行脚本。我不知道在哪里寻找一个这样做的过程,我已经在这个系统上编写了很多小脚本,我可以看到什么脚本乱七八糟,
当我这样做时:
user@Host ~/Python Scripts> python
我明白了:
Python 3.4.2 (default, Feb 21 2015, 22:19:02)
[GCC 4.9.2 20150212 (Red Hat 4.9.2-6)] on linux
Type "help", "copyright", "credits" or "license" for more information.
# ! / u s r / b i n / e n v p y t h o n
finished
Failed calling sys.__interactivehook__
Traceback (most recent call last):
File "/usr/local/opt/python-3.4.2/lib/python3.4/site.py", line 396, in register_readline
import rlcompleter
File "/usr/local/opt/python-3.4.2/lib/python3.4/rlcompleter.py", line 161, in <module>
readline.set_completer(Completer().complete)
AttributeError: 'module' object has no attribute 'set_completer'
>>> quit()
这是我运行的文件,并在每个python start上运行:
#!/usr/bin/env python
try:
number = int(input("Enter a number: "))
print(number)
aFile = open('modules.py')
for i in aFile:
print(aFile.readline(), end=' ')
except ValueError:
print('Not a number, please re-enter:')
number = int(input('Enter a number: '))
print(number)
except IOError:
print('Cannot open file')
print('finished')
导致此问题的原因以及如何解决?
编辑#1
系统是Fedora 21,文件modules.py和在交互式shell启动时运行的脚本是从未在Windows系统上编辑过的脚本。
系统尚未重启11天。
这是:
~/Python Scripts> file tryexcept.py
tryexcept.py: Python script, ASCII text executable
编辑#2
我当前的工作目录中有一个readline.py:
~/Python Scripts> ls | grep readline
readline.py
答案 0 :(得分:4)
rlcompleter.py
的最后一部分试图导入readline,然后运行你错误的行。
try:
import readline
except ImportError:
pass
else:
readline.set_completer(Completer().complete)
# Release references early at shutdown (the readline module's
# contents are quasi-immortal, and the completer function holds a
# reference to globals).
atexit.register(lambda: readline.set_completer(None))
您导入的路径中必须有一个readline.py
文件,而不是实际的python模块。如果您没有readline.py,但曾经有过查找readline.pyc
文件。
在解释器中放置一个import readline;print(readline.__file__)
,看看你究竟要导入什么
答案 1 :(得分:2)
我在Fedora 21系统中遇到了同样的问题。在我的情况下发生的是我试图在已删除的文件夹中运行python解释器。
这是因为我导航到一个文件夹,在命令行中输入 Dropbox 。然后,我使用 Files 应用程序删除 Dropbox 文件夹。回到控制台,当前文件夹仍然是 Dropbox 。
从这个已删除的文件夹运行python会导致同样的错误。