Exception TypeError: "'NoneType' object is not callable" in
每当我在我的脚本中运行“killableprocess. popen (command)”代码时,我都会使用killableprocess包(构建在子进程之上)来运行进程,我得到以下错误:File "killableprocess.py", line 157, in _execute_child
winprocess.AssignProcessToJobObject(self._job, hp)
File "winprocess.py", line 37, in ErrCheckBool
raise WinError()
WindowsError Access is denied
Exception TypeError: "'NoneType' object is not callable" in <bound method AutoHANDLE.__del__ of <AutoHANDLE object at 0x025D42B0>> ignored
但是当我从python交互式控制台(python 2.6)运行它时,它工作得很好。这可能意味着当我从脚本中运行这个时存在权限问题,但是我不知道如何解决它们。我尝试从我作为管理员运行的cmd运行脚本,但它没有起作用。 我通过切换到process目录(我试图使用inkscape)解决了一个类似的问题,它解决了我的问题
import subprocess
inkscape_dir=r"C:\Program Files (x86)\Inkscape"
assert os.path.isdir(inkscape_dir)
os.chdir(inkscape_dir)
subprocess.Popen(['inkscape.exe',"-f",fname,"-e",fname_png])
确保路径包括可执行文件的名称(inkscape.exe) 当我在subprocess模块中遇到这个问题时,我发现‘args’(subprocess. popen())中的第一个条目(subprocess. popen()的第一个参数)我需要将参数列表中的可执行文件设置为我的可执行文件的完整路径。
app = 'app.exe'
appPath = os.path.join(BIN_DIR, app)
commandLine =
process = subprocess.Popen(commandLine, executable=appPath) 或者,如果你的模块不工作,你可以使用«subprocess»模块:
import subprocess, os, time
process = subprocess.Popen("somecommand", shell=True)
n = 0
while True:
if not process.poll():
print('The command is running...')
if n >= 10:
pid = process.pid()
os.kill(pid, 9) # 9 = SIGKILL
else:
print('The command is not running..')
n += 1
time.sleep(1)
你是否指定要传递给Popen (argv中的第一项)的可执行文件的完整路径?
页:
[1]