背景:
pip install curses
安装了curses 每当我在IDLE中运行s = curses.initscr()
时,都会收到以下错误消息:
File "C:/Users/jacob/AppData/Local/Programs/Python/Python37-32/screentest.py", line 3, in <module>
s = curses.initscr()
File "C:\Users\jacob\AppData\Local\Programs\Python\Python37-32\lib\curses\__init__.py", line 30, in initscr
fd=_sys.__stdout__.fileno())
AttributeError: 'NoneType' object has no attribute 'fileno'
这是来自PyCharm的消息:
Redirection is not supported.
Process finished with exit code 1
当我从DevDungeon运行示例代码片段时,
print("Preparing to initialize screen...")
screen = curses.initscr()
print("Screen initialized.")
screen.refresh()
curses.napms(2000)
curses.endwin()
print("Window ended.")
在启动python的命令提示符下,它只会显示无法交互的黑屏。
shell中发生的事情是否正确?
到底是怎么回事?
我该如何解决?
请帮助谢谢
答案 0 :(得分:0)
CREATE OR REPLACE PACKAGE COUNT_STUFF_PKG AS
CURSOR csrCount_stuff IS
SELECT ((SELECT count(*)
FROM persona
WHERE DTYPE = 'Vendedor' AND
ACTIVO = 1) *
(SELECT count(*)
FROM TIPO_DOCUMENTO
WHERE ENTIDAD = 'Vendedor' AND
ACTIVO = 1) +
(SELECT count(*)
FROM persona
WHERE DTYPE = 'Peoneta' AND
ACTIVO = 1) *
(SELECT count(*)
FROM TIPO_DOCUMENTO
WHERE ENTIDAD = 'Peoneta' AND
ACTIVO = 1) +
(SELECT count(*)
FROM VEHICULO
WHERE ACTIVO = 1) *
(SELECT count(*)
FROM TIPO_DOCUMENTO
WHERE ENTIDAD = 'Vehiculo' AND
ACTIVO = 1 )) AS total,
--Vigentes
((SELECT COUNT(*)
FROM DOC_PERS
WHERE FECHA_VIGENCIA > SYSDATE +30 AND
ACTIVO = 1) +
(SELECT COUNT(*)
FROM DOC_VEH
WHERE FECHA_VIGENCIA > SYSDATE +30 AND
ACTIVO = 1))AS Vigentes,
--PorVencer
((SELECT COUNT(*)
FROM DOC_PERS
WHERE FECHA_VIGENCIA < SYSDATE +30 AND
FECHA_VIGENCIA > SYSDATE + 15 AND
ACTIVO = 1) +
(SELECT COUNT(*)
FROM DOC_VEH
WHERE FECHA_VIGENCIA < SYSDATE +30 AND
FECHA_VIGENCIA > SYSDATE +15 AND
ACTIVO = 1)) AS PorVencer,
--Criticos
((SELECT COUNT(*)
FROM DOC_PERS
WHERE FECHA_VIGENCIA < SYSDATE +15 AND
FECHA_VIGENCIA > SYSDATE AND
ACTIVO = 1) +
(SELECT COUNT(*)
FROM DOC_VEH
WHERE FECHA_VIGENCIA < SYSDATE +15 AND
FECHA_VIGENCIA > SYSDATE AND
ACTIVO = 1)) AS Criticos
FROM DUAL;
FUNCTION COMPUTE_STUFF
RETURN COUNT_STUFF_PKG.csrCount_stuff%ROWTYPE
END COUNT_STUFF_PKG;
CREATE OR REPLACE PACKAGE BODY COUNT_STUFF_PKG AS
FUNCTION COMPUTE_STUFF
RETURN COUNT_STUFF_PKG.csrCount_stuff%ROWTYPE
IS
rowCount_stuff COUNT_STUFF_PKG.csrCount_stuff%ROWTYPE;
BEGIN
OPEN csrCount_stuff;
FETCH csrCount_stuff
INTO rowCount_stuff;
CLOSE csrCount_stuff;
RETURN rowCount_stuff;
END COMPUTE_STUFF;
END COUNT_STUFF_PKG;
是python进程的原始sys.stdout。当您使用仅在Windows上存在的pythonw.exe启动python时,python最初会执行if(rb = null)
{
Debug.LogError("Could not find Rigid Body!\n" + this.name);
}
。 (我不确定* nix上会发生什么。)pythonw.exe用于在没有关联文本控制台的情况下通过GUI UI运行python。在Windows上,IDLE图标和“开始”菜单项与pythonw一起运行python。与其他GUI IDE相同。
if(rb == null)
与文本终端或控制台一起运行。假设sys.__stdout__
就是这样。当stdout = __stdout__ = None
为“无”时,它将无法工作。
如果您使用curses
从命令行终端/控制台启动IDLE,则sys.__stdout__
将是该终端,并且它将具有fileno()。之后,我不知道会发生什么。如果您的程序使用curses,则最好在文本控制台中运行它。