##// END OF EJS Templates
Backport PR #10644: system-wide startup files and env config...
Matthias Bussonnier -
Show More
@@ -0,0 +1,5 b''
1
2 - IPython now looks for config files in ``{sys.prefix}/etc/ipython``
3 for environment-specific configuration.
4 - Startup files can be found in ``/etc/ipython/startup`` or ``{sys.prefix}/etc/ipython/startup``
5 in addition to the profile directory, for system-wide or env-specific startup files.
@@ -44,6 +44,14 b' else:'
44 44 "/etc/ipython",
45 45 ]
46 46
47
48 ENV_CONFIG_DIRS = []
49 _env_config_dir = os.path.join(sys.prefix, 'etc', 'ipython')
50 if _env_config_dir not in SYSTEM_CONFIG_DIRS:
51 # only add ENV_CONFIG if sys.prefix is not already included
52 ENV_CONFIG_DIRS.append(_env_config_dir)
53
54
47 55 _envvar = os.environ.get('IPYTHON_SUPPRESS_CONFIG_ERRORS')
48 56 if _envvar in {None, ''}:
49 57 IPYTHON_SUPPRESS_CONFIG_ERRORS = None
@@ -403,6 +411,7 b' class BaseIPythonApplication(Application):'
403 411
404 412 def init_config_files(self):
405 413 """[optionally] copy default config files into profile dir."""
414 self.config_file_paths.extend(ENV_CONFIG_DIRS)
406 415 self.config_file_paths.extend(SYSTEM_CONFIG_DIRS)
407 416 # copy config files
408 417 path = self.builtin_profile_dir
@@ -11,12 +11,14 b' from __future__ import absolute_import'
11 11 from __future__ import print_function
12 12
13 13 import glob
14 from itertools import chain
14 15 import os
15 16 import sys
16 17
17 18 from traitlets.config.application import boolean_flag
18 19 from traitlets.config.configurable import Configurable
19 20 from traitlets.config.loader import Config
21 from IPython.core.application import SYSTEM_CONFIG_DIRS, ENV_CONFIG_DIRS
20 22 from IPython.core import pylabtools
21 23 from IPython.utils import py3compat
22 24 from IPython.utils.contexts import preserve_keys
@@ -331,7 +333,9 b' class InteractiveShellApp(Configurable):'
331 333
332 334 def _run_startup_files(self):
333 335 """Run files from profile startup directory"""
334 startup_dir = self.profile_dir.startup_dir
336 startup_dirs = [self.profile_dir.startup_dir] + [
337 os.path.join(p, 'startup') for p in chain(ENV_CONFIG_DIRS, SYSTEM_CONFIG_DIRS)
338 ]
335 339 startup_files = []
336 340
337 341 if self.exec_PYTHONSTARTUP and os.environ.get('PYTHONSTARTUP', False) and \
@@ -343,9 +347,9 b' class InteractiveShellApp(Configurable):'
343 347 except:
344 348 self.log.warning("Unknown error in handling PYTHONSTARTUP file %s:", python_startup)
345 349 self.shell.showtraceback()
346
347 startup_files += glob.glob(os.path.join(startup_dir, '*.py'))
348 startup_files += glob.glob(os.path.join(startup_dir, '*.ipy'))
350 for startup_dir in startup_dirs[::-1]:
351 startup_files += glob.glob(os.path.join(startup_dir, '*.py'))
352 startup_files += glob.glob(os.path.join(startup_dir, '*.ipy'))
349 353 if not startup_files:
350 354 return
351 355
General Comments 0
You need to be logged in to leave comments. Login now