令狐少侠 发表于 2018-9-27 11:50:30

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运行脚本,但它没有起作用。

强人锁男 发表于 2018-9-27 12:08:03

我通过切换到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])

他改变了中国 发表于 2018-9-27 15:28:31

确保路径包括可执行文件的名称(inkscape.exe)

德国骨科 发表于 2018-9-27 15:33:53

当我在subprocess模块中遇到这个问题时,我发现‘args’(subprocess. popen())中的第一个条目(subprocess. popen()的第一个参数)我需要将参数列表中的可执行文件设置为我的可执行文件的完整路径。
app = 'app.exe'
appPath = os.path.join(BIN_DIR, app)

commandLine =
process = subprocess.Popen(commandLine, executable=appPath)

马猴烧酒 发表于 2018-9-27 15:37:37

或者,如果你的模块不工作,你可以使用«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)

此间少年 发表于 2018-9-27 15:43:24

你是否指定要传递给Popen (argv中的第一项)的可执行文件的完整路径?
页: [1]
查看完整版本: Exception TypeError: "'NoneType' object is not callable" in