104 lines
2.7 KiB
Python
104 lines
2.7 KiB
Python
#!/usr/bin/env python
|
|
"""
|
|
display environment information that isfrequently
|
|
used to troubleshoot installations of Jupyter or IPython
|
|
"""
|
|
|
|
# import argparse
|
|
import os
|
|
import platform
|
|
import subprocess
|
|
import sys
|
|
|
|
|
|
# def get_args():
|
|
# """
|
|
# TODO: output in JSON or xml? maybe?
|
|
# """
|
|
# pass
|
|
|
|
def subs(cmd):
|
|
"""
|
|
get data from commands that we need to run outside of python
|
|
"""
|
|
try:
|
|
stdout = subprocess.check_output(cmd)
|
|
return stdout.decode('utf-8', 'replace').strip()
|
|
except (OSError, subprocess.CalledProcessError):
|
|
return None
|
|
|
|
|
|
def get_data():
|
|
"""
|
|
returns a dict of various user environment data
|
|
"""
|
|
env = {}
|
|
env['path'] = os.environ.get('PATH')
|
|
env['sys_path'] = sys.path
|
|
env['sys_exe'] = sys.executable
|
|
env['sys_version'] = sys.version
|
|
env['platform'] = platform.platform()
|
|
# FIXME: which on Windows?
|
|
if sys.platform == 'win32':
|
|
env['where'] = subs(['where', 'jupyter'])
|
|
env['which'] = None
|
|
else:
|
|
env['which'] = subs(['which', '-a', 'jupyter'])
|
|
env['where'] = None
|
|
env['pip'] = subs([sys.executable, '-m', 'pip', 'list'])
|
|
env['conda'] = subs(['conda', 'list'])
|
|
return env
|
|
|
|
|
|
def main():
|
|
"""
|
|
print out useful info
|
|
"""
|
|
#pylint: disable=superfluous-parens
|
|
# args = get_args()
|
|
environment_data = get_data()
|
|
|
|
print('$PATH:')
|
|
for directory in environment_data['path'].split(os.pathsep):
|
|
print('\t' + directory)
|
|
|
|
print('\n' + 'sys.path:')
|
|
for directory in environment_data['sys_path']:
|
|
print('\t' + directory)
|
|
|
|
print('\n' + 'sys.executable:')
|
|
print('\t' + environment_data['sys_exe'])
|
|
|
|
print('\n' + 'sys.version:')
|
|
if '\n' in environment_data['sys_version']:
|
|
for data in environment_data['sys_version'].split('\n'):
|
|
print('\t' + data)
|
|
else:
|
|
print('\t' + environment_data['sys_version'])
|
|
|
|
print('\n' + 'platform.platform():')
|
|
print('\t' + environment_data['platform'])
|
|
|
|
if environment_data['which']:
|
|
print('\n' + 'which -a jupyter:')
|
|
for line in environment_data['which'].split('\n'):
|
|
print('\t' + line)
|
|
|
|
if environment_data['where']:
|
|
print('\n' + 'where jupyter:')
|
|
for line in environment_data['where'].split('\n'):
|
|
print('\t' + line)
|
|
|
|
if environment_data['pip']:
|
|
print('\n' + 'pip list:')
|
|
for package in environment_data['pip'].split('\n'):
|
|
print('\t' + package)
|
|
|
|
if environment_data['conda']:
|
|
print('\n' + 'conda list:')
|
|
for package in environment_data['conda'].split('\n'):
|
|
print('\t' + package)
|
|
|
|
|
|
if __name__ == '__main__':
|
|
main()
|