Here's a reproducer: [centos@undercloud test]$ cat a.py #!/usr/bin/env python3 print('a import keystoneclient') import keystoneclient.v3 as ksclient import os import subprocess def launch(): print('a launch()') p = os.getcwd() cmd = ['sudo', '--preserve-env', 'python3', '{}/b.py'.format(p)] try: print('a subprocess') subprocess.check_call(cmd) except Exception as e: print('a exception') raise if __name__ == '__main__': print('a main()') launch() [centos@undercloud test]$ cat b.py #!/usr/bin/env python3 print('b importing keystone client') import keystoneclient.v3 as ksclient def launch(): print("b launch()") if __name__ == '__main__': print('b main()') launch() This can result in something like this: [centos@undercloud test]$ ./a.py a import keystoneclient a main() a launch() a subprocess b importing keystone client ^CTraceback (most recent call last): File "/home/centos/test/b.py", line 3, in import keystoneclient.v3 as ksclient File "/usr/lib/python3.6/site-packages/keystoneclient/v3/__init__.py", line 2, in from keystoneclient.v3.client import Client # noqa File "/usr/lib/python3.6/site-packages/keystoneclient/v3/client.py", line 23, in from keystoneclient import httpclient File "", line 1020, in _handle_fromlist File "/usr/lib/python3.6/site-packages/keystoneclient/__init__.py", line 72, in __getattr__ return importlib.import_module('keystoneclient.%s' % name) File "/usr/lib64/python3.6/importlib/__init__.py", line 126, in import_module return _bootstrap._gcd_import(name[level:], package, level) File "/usr/lib/python3.6/site-packages/keystoneclient/httpclient.py", line 43, in import keyring File "/usr/lib/python3.6/site-packages/keyring/__init__.py", line 1, in from .core import ( File "/usr/lib/python3.6/site-packages/keyring/core.py", line 192, in init_backend() File "/usr/lib/python3.6/site-packages/keyring/core.py", line 96, in init_backend filter(limit, backend.get_all_keyring()), File "/usr/lib/python3.6/site-packages/keyring/util/__init__.py", line 22, in wrapper func.always_returns = func(*args, **kwargs) File "/usr/lib/python3.6/site-packages/keyring/backend.py", line 219, in get_all_keyring return list(rings) File "/usr/lib/python3.6/site-packages/keyring/util/__init__.py", line 33, in suppress_exceptions for callable in callables: File "/usr/lib/python3.6/site-packages/keyring/util/properties.py", line 26, in __get__ return self.fget.__get__(None, owner)() File "/usr/lib/python3.6/site-packages/keyring/backend.py", line 68, in viable cls.priority File "/usr/lib/python3.6/site-packages/keyring/util/properties.py", line 26, in __get__ return self.fget.__get__(None, owner)() File "/usr/lib/python3.6/site-packages/keyring/backends/SecretService.py", line 40, in priority bus = secretstorage.dbus_init() File "/usr/lib/python3.6/site-packages/secretstorage/__init__.py", line 37, in dbus_init connection = connect_and_authenticate() File "/usr/lib/python3.6/site-packages/jeepney/integrate/blocking.py", line 102, in connect_and_authenticate conn = DBusConnection(sock) File "/usr/lib/python3.6/site-packages/jeepney/integrate/blocking.py", line 40, in __init__ hello_reply = self.bus_proxy.Hello() File "/usr/lib/python3.6/site-packages/jeepney/integrate/blocking.py", line 84, in inner return self._connection.send_and_get_reply(msg) File "/usr/lib/python3.6/site-packages/jeepney/integrate/blocking.py", line 67, in send_and_get_reply self.recv_messages() File "/usr/lib/python3.6/site-packages/jeepney/integrate/blocking.py", line 55, in recv_messages b = self.sock.recv(4096) KeyboardInterrupt a exception Traceback (most recent call last): File "/usr/lib64/python3.6/subprocess.py", line 289, in call return p.wait(timeout=timeout) File "/usr/lib64/python3.6/subprocess.py", line 1477, in wait (pid, sts) = self._try_wait(0) File "/usr/lib64/python3.6/subprocess.py", line 1424, in _try_wait (pid, sts) = os.waitpid(self.pid, wait_flags) KeyboardInterrupt During handling of the above exception, another exception occurred: Traceback (most recent call last): File "./a.py", line 21, in launch() File "./a.py", line 14, in launch subprocess.check_call(cmd) File "/usr/lib64/python3.6/subprocess.py", line 306, in check_call retcode = call(*popenargs, **kwargs) File "/usr/lib64/python3.6/subprocess.py", line 291, in call p.kill() File "/usr/lib64/python3.6/subprocess.py", line 1610, in kill self.send_signal(signal.SIGKILL) File "/usr/lib64/python3.6/subprocess.py", line 1600, in send_signal os.kill(self.pid, sig) PermissionError: [Errno 1] Operation not permitted [centos@undercloud test]$