# Subprocess.call does not work!

**URL:** https://discourse.slicer.org/t/subprocess-call-does-not-work/2837
**Category:** Support
**Created:** [May 17, 2018, 10:00am UTC](https://discourse.slicer.org/t/subprocess-call-does-not-work/2837 "2018-05-17T10:00:16Z")
**Posts on this page:** 14
**Page:** 1

<div class="post-metadata">

### Author: ![wpgao](https://avatars.discourse-cdn.com/v4/letter/w/8e8cbc/32.png) [@wpgao](https://discourse.slicer.org/u/wpgao)
#### Post date: [May 17, 2018, 10:00am UTC](https://discourse.slicer.org/t/subprocess-call-does-not-work/2837/1 "2018-05-17T10:00:16Z")

</div>

Hi all,

I try to use subprocess.call to run an external application in the python interactor of 3D Slicer but failed! Error message is “terminate called after throwing an instance of ‘H5::DataSpaceIException’”  
However, when I run the python in the terminal and input the same command, the application works!  
Is there any difference between the two pythons?  
Thanks very much!

Operating system: Centos 7  
Slicer version: 4.8  
Expected behavior:  
Actual behavior:

---

<div class="post-metadata">

### Author: ![ihnorton](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.slicer.org/ihnorton/32/9_2.png) [@ihnorton](https://discourse.slicer.org/u/ihnorton)
#### Post date: [May 17, 2018, 2:33pm UTC](https://discourse.slicer.org/t/subprocess-call-does-not-work/2837/2 "2018-05-17T14:33:05Z")

</div>

> [@wpgao](#):
>
> Is there any difference between the two pythons?

Yes, Slicer’s python is [embedded](https://discourse.slicer.org/t/access-slicer-modules-and-libraries-in-pycharm/2765/2).

`subprocess.call` should generally work, however, it will block Slicer (GUI will freeze) until the call completes (you can use `Popen` or Slicer’s CLI infrastructure instead for asynchronous calls). I just tried `subprocess.call(['sleep', '10'])` on linux with a recent nightly, and it worked fine.

Please show a minimal example if you can – maybe someone will notice a problem.

---

<div class="post-metadata">

### Author: ![lassoan](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.slicer.org/lassoan/32/13_2.png) [@lassoan](https://discourse.slicer.org/u/lassoan)
#### Post date: [May 17, 2018, 4:52pm UTC](https://discourse.slicer.org/t/subprocess-call-does-not-work/2837/3 "2018-05-17T16:52:31Z")

</div>

The crash is probably because your application tries to use Slicer’s ITK, VTK, HDF5, etc. libraries. If you want to use the default system environment, you can retrieve it using `slicer.util.startupEnvironment()`.

```
from subprocess import check_output
check_output(
  ["/usr/bin/python3", "-c", "print('hola')"], 
  env=slicer.util.startupEnvironment())
'hola\n'

```

See details in this post: [Subprocess call in Python interpreter results in memory corruption](https://discourse.slicer.org/t/subprocess-call-in-python-interpreter-results-in-memory-corruption/919/17)

---

<div class="post-metadata">

### Author: ![wpgao](https://avatars.discourse-cdn.com/v4/letter/w/8e8cbc/32.png) [@wpgao](https://discourse.slicer.org/u/wpgao)
#### Post date: [May 18, 2018, 10:51am UTC](https://discourse.slicer.org/t/subprocess-call-does-not-work/2837/4 "2018-05-18T10:51:54Z")

</div>

@ihnorton Thanks for your reply. I just try to call a function of ANTs for image registration!  
@lassoan Thanks! It works according to your suggestion. In addition, shell should be set True. Otherwise, it does not work. I don’t know why and there is no any information output to the terminal!

---

<div class="post-metadata">

### Author: ![ihnorton](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.slicer.org/ihnorton/32/9_2.png) [@ihnorton](https://discourse.slicer.org/u/ihnorton)
#### Post date: [September 6, 2018, 4:31am UTC](https://discourse.slicer.org/t/subprocess-call-does-not-work/2837/5 "2018-09-06T04:31:58Z")

</div>

A post was split to a new topic: [Calling C++ from Python](https://discourse.slicer.org/t/calling-c-from-python/3998)

---

<div class="post-metadata">

### Author: ![Saima](https://avatars.discourse-cdn.com/v4/letter/s/9d8465/32.png) [@Saima](https://discourse.slicer.org/u/Saima)
#### Post date: [July 8, 2019, 8:53am UTC](https://discourse.slicer.org/t/subprocess-call-does-not-work/2837/6 "2019-07-08T08:53:10Z")

</div>

Hi andras,  
I am extactly doing the same but getting error.

```auto
Traceback (most recent call last):
  File "<console>", line 1, in <module>
  File "C:\Program Files\Slicer 4.10.2\lib\Python\Lib\subprocess.py", line 212, in check_output
    process = Popen(stdout=PIPE, *popenargs, **kwargs)
  File "C:\Program Files\Slicer 4.10.2\lib\Python\Lib\subprocess.py", line 390, in __init__
    errread, errwrite)
  File "C:\Program Files\Slicer 4.10.2\lib\Python\Lib\subprocess.py", line 640, in _execute_child
    startupinfo)
WindowsError: [Error 2] The system cannot find the file specified

```

Would you please suggest what am I doing wrong??

---

<div class="post-metadata">

### Author: ![jcfr](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.slicer.org/jcfr/32/17825_2.png) [@jcfr](https://discourse.slicer.org/u/jcfr)
#### Post date: [July 8, 2019, 1:46pm UTC](https://discourse.slicer.org/t/subprocess-call-does-not-work/2837/7 "2019-07-08T13:46:07Z")

</div>

The message indicates that the path to the executable is incorrect. So that we can better understand the problem, could you share the code leading to this exception ?

---

<div class="post-metadata">

### Author: ![Saima](https://avatars.discourse-cdn.com/v4/letter/s/9d8465/32.png) [@Saima](https://discourse.slicer.org/u/Saima)
#### Post date: [July 9, 2019, 6:56am UTC](https://discourse.slicer.org/t/subprocess-call-does-not-work/2837/8 "2019-07-09T06:56:13Z")

</div>

I am simply checking it with print statement.

```python
command_line = [r"F:\anaconda3\python3.exe","-c","print('helo')"]
from subprocess import check_output
command_result = check_output(command_line, env = slicer.util.startupEnvironment())

```

---

<div class="post-metadata">

### Author: ![Saima](https://avatars.discourse-cdn.com/v4/letter/s/9d8465/32.png) [@Saima](https://discourse.slicer.org/u/Saima)
#### Post date: [July 10, 2019, 7:24am UTC](https://discourse.slicer.org/t/subprocess-call-does-not-work/2837/9 "2019-07-10T07:24:44Z")

</div>

Hi,  
Why am I unable to run the code below

```python
command_line=["F:\anaconda3\python.exe","-c", "print('hola')"]
from subprocess import run
command_result = run(command_line, env =
slicer.util.startupEnvironment())
print(command_result)

```

```auto
Traceback (most recent call last):
  File "F:\Slicer 4.11.0-2019-07-06\bin\Python\slicer\ScriptedLoadableModule.py", line 196, in onReload
    slicer.util.reloadScriptedModule(self.moduleName)
  File "F:\Slicer 4.11.0-2019-07-06\bin\Python\slicer\util.py", line 769, in reloadScriptedModule
    moduleName, fp, filePath, ('.py', 'r', imp.PY_SOURCE))
  File "F:\Slicer 4.11.0-2019-07-06\lib\Python\Lib\imp.py", line 235, in load_module
    return load_source(name, filename, file)
  File "F:\Slicer 4.11.0-2019-07-06\lib\Python\Lib\imp.py", line 170, in load_source
    module = _exec(spec, sys.modules[name])
  File "<frozen importlib._bootstrap>", line 618, in _exec
  File "<frozen importlib._bootstrap_external>", line 678, in exec_module
  File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
  File "F:/Slicer 4.11.0-2019-07-06/subprocess/subprocess/subprocess.py", line 134, in <module>
    slicer.util.startupEnvironment())
  File "F:\Slicer 4.11.0-2019-07-06\lib\Python\Lib\subprocess.py", line 403, in run
    with Popen(*popenargs, **kwargs) as process:
  File "F:\Slicer 4.11.0-2019-07-06\lib\Python\Lib\subprocess.py", line 709, in __init__
    restore_signals, start_new_session)
  File "F:\Slicer 4.11.0-2019-07-06\lib\Python\Lib\subprocess.py", line 997, in _execute_child
    startupinfo)
FileNotFoundError: [WinError 2] The system cannot find the file specified

```

---

<div class="post-metadata">

### Author: ![jcfr](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.slicer.org/jcfr/32/17825_2.png) [@jcfr](https://discourse.slicer.org/u/jcfr)
#### Post date: [July 10, 2019, 7:45am UTC](https://discourse.slicer.org/t/subprocess-call-does-not-work/2837/10 "2019-07-10T07:45:57Z")

</div>

You should do this instead:

```auto
command_line=["F:/anaconda3/python.exe", "-c", "print('hola')"]
from subprocess import run
command_result = run(command_line, env=slicer.util.startupEnvironment())
print(command_result)

```

---

<div class="post-metadata">

### Author: ![Saima](https://avatars.discourse-cdn.com/v4/letter/s/9d8465/32.png) [@Saima](https://discourse.slicer.org/u/Saima)
#### Post date: [July 11, 2019, 1:16pm UTC](https://discourse.slicer.org/t/subprocess-call-does-not-work/2837/11 "2019-07-11T13:16:41Z")

</div>

> [@jcfr](#):
>
> command\_line=[“F:/anaconda3/python.exe”, “-c”, “print(‘hola’)”] from subprocess import run command\_result = run(command\_line, env=slicer.util.startupEnvironment()) print(command\_result)

the error remain the same

I am unable to understand.

It could not find the file.

---

<div class="post-metadata">

### Author: ![jamesobutler](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.slicer.org/jamesobutler/32/7511_2.png) [@jamesobutler](https://discourse.slicer.org/u/jamesobutler)
#### Post date: [July 11, 2019, 1:41pm UTC](https://discourse.slicer.org/t/subprocess-call-does-not-work/2837/12 "2019-07-11T13:41:07Z")

</div>

@Saima I get the error you are getting when the python path that you are targeting doesn’t actually exist.

Can you confirm that `"F:\anaconda3\python.exe"` actually exists?

---

<div class="post-metadata">

### Author: ![Saima](https://avatars.discourse-cdn.com/v4/letter/s/9d8465/32.png) [@Saima](https://discourse.slicer.org/u/Saima)
#### Post date: [July 11, 2019, 1:45pm UTC](https://discourse.slicer.org/t/subprocess-call-does-not-work/2837/13 "2019-07-11T13:45:42Z")

</div>

yes I did installation again and the path was changed. I didnt check updated the path. now its running.

Thanks all

---

<div class="post-metadata">

### Author: ![lassoan](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.slicer.org/lassoan/32/13_2.png) [@lassoan](https://discourse.slicer.org/u/lassoan)
#### Post date: [July 11, 2019, 2:25pm UTC](https://discourse.slicer.org/t/subprocess-call-does-not-work/2837/14 "2019-07-11T14:25:18Z")

</div>

FYI, since backslash (`\`) is an escape character in Python, you cannot simply use it in a string literal in Python.

The easiest is to indicate that you specify a raw string by prepending an `r` character before the string. This is correct:

```
somePath = r"F:\someFolder\python.exe"

```

If you need to use a regular string then backslash can be entered by typing double-backslash. This is correct:

```
somePath = "F:\\someFolder\\python.exe"

```

You may also use Unix-type separators. This is correct:

```
somePath = "F:/someFolder/python.exe"
```
