]> granicus.if.org Git - python/commitdiff
Add -E command line switch (ignore environment variables like PYTHONHOME
authorNeil Schemenauer <nascheme@enme.ucalgary.ca>
Mon, 23 Jul 2001 16:30:27 +0000 (16:30 +0000)
committerNeil Schemenauer <nascheme@enme.ucalgary.ca>
Mon, 23 Jul 2001 16:30:27 +0000 (16:30 +0000)
and PYTHONPATH).

12 files changed:
Include/pydebug.h
Makefile.pre.in
Misc/python.man
Modules/getpath.c
Modules/main.c
Modules/timemodule.c
PC/getpathp.c
PC/os2vacpp/getpathp.c
Python/frozenmain.c
Python/import.c
Python/pythonrun.c
RISCOS/Modules/getpath_riscos.c

index 0372401932743f6f0fbfe6f158090f1658a6ddb5..94ea352d859e60c174b5092665ee4a44cfcb9013 100644 (file)
@@ -14,6 +14,12 @@ extern DL_IMPORT(int) Py_UseClassExceptionsFlag;
 extern DL_IMPORT(int) Py_FrozenFlag;
 extern DL_IMPORT(int) Py_TabcheckFlag;
 extern DL_IMPORT(int) Py_UnicodeFlag;
+extern DL_IMPORT(int) Py_IgnoreEnvironmentFlag;
+
+/* this is a wrapper around getenv() the pays attention to
+   Py_IgnoreEnvironmentFlag.  It should be used for getting variables like
+   PYTHONPATH and PYTHONHOME from the environment */
+#define Py_GETENV(s) (Py_IgnoreEnvironmentFlag ? NULL : getenv(s))
 
 DL_IMPORT(void) Py_FatalError(char *message);
 
index dc63519307636f0173b3de6bece115ffa1c1dd7b..139be8b417784406c87d15e7af4280e4eeebeebd 100644 (file)
@@ -281,12 +281,12 @@ $(PYTHON):        Modules/$(MAINOBJ) $(LDLIBRARY)
                        $(LDLIBRARY) $(LIBS) $(MODLIBS) $(SYSLIBS) $(LDLAST)
 
 platform: $(PYTHON)
-       ./$(PYTHON) -c 'import sys ; from distutils.util import get_platform ; print get_platform()+"-"+sys.version[0:3]' >platform
+       ./$(PYTHON) -E -c 'import sys ; from distutils.util import get_platform ; print get_platform()+"-"+sys.version[0:3]' >platform
 
 
 # Build the shared modules
 sharedmods: $(PYTHON)
-       PYTHONPATH= ./$(PYTHON) $(srcdir)/setup.py build
+       ./$(PYTHON) -E $(srcdir)/setup.py build
 
 # buildno should really depend on something like LIBRARY_SRC
 buildno: $(PARSER_OBJS) \
@@ -466,26 +466,26 @@ $(LIBRARY_OBJS) $(MODOBJS) Modules/$(MAINOBJ): $(PYTHON_HEADERS)
 # Test the interpreter (twice, once without .pyc files, once with)
 TESTOPTS=      -l
 TESTPROG=      $(srcdir)/Lib/test/regrtest.py
-TESTPYTHON=    ./$(PYTHON) -tt
+TESTPYTHON=    ./$(PYTHON) -E -tt
 test:          all platform
                -find $(srcdir)/Lib -name '*.py[co]' -print | xargs rm -f
-               -PYTHONPATH= $(TESTPYTHON) $(TESTPROG) $(TESTOPTS)
-               PYTHONPATH= $(TESTPYTHON) $(TESTPROG) $(TESTOPTS)
+               -$(TESTPYTHON) $(TESTPROG) $(TESTOPTS)
+               $(TESTPYTHON) $(TESTPROG) $(TESTOPTS)
 
 QUICKTESTOPTS= $(TESTOPTS) -x test_thread test_signal test_strftime \
                test_unicodedata test_re test_sre test_select test_poll \
                test_linuxaudiodev test_sunaudiodev
 quicktest:     all platform
                -find $(srcdir)/Lib -name '*.py[co]' -print | xargs rm -f
-               -PYTHONPATH= $(TESTPYTHON) $(TESTPROG) $(QUICKTESTOPTS)
-               PYTHONPATH= $(TESTPYTHON) $(TESTPROG) $(QUICKTESTOPTS)
+               -$(TESTPYTHON) $(TESTPROG) $(QUICKTESTOPTS)
+               $(TESTPYTHON) $(TESTPROG) $(QUICKTESTOPTS)
 
 MEMTESTOPTS=    $(QUICKTESTOPTS) -x test_dl test___all__ test_fork1 \
                test_longexp
 memtest:       all platform
                -rm -f $(srcdir)/Lib/test/*.py[co]
-               -PYTHONPATH= $(TESTPYTHON) $(TESTPROG) $(MEMTESTOPTS)
-               PYTHONPATH= $(TESTPYTHON) $(TESTPROG) $(MEMTESTOPTS)
+               -$(TESTPYTHON) $(TESTPROG) $(MEMTESTOPTS)
+               $(TESTPYTHON) $(TESTPROG) $(MEMTESTOPTS)
 
 # Install everything
 install:       altinstall bininstall maninstall
@@ -708,7 +708,7 @@ libainstall:        all
 # Install the dynamically loadable modules
 # This goes into $(exec_prefix)
 sharedinstall:
-       PYTHONPATH= ./$(PYTHON) $(srcdir)/setup.py install \
+       ./$(PYTHON) -E $(srcdir)/setup.py install \
                --install-platlib=$(DESTSHARED)
 
 # Build the toplevel Makefile
index 2697bc7822c05254c216e5171ddee76688e02350..723d714b88159520eac49886b40d9e1e9439e976 100644 (file)
@@ -16,6 +16,9 @@ python \- an interpreted, interactive, object-oriented programming language
 .B \-S
 ]
 [
+.B \-E
+]
+[
 .B \-t
 ]
 [
@@ -99,6 +102,10 @@ and the site-dependent manipulations of
 .I sys.path
 that it entails.
 .TP
+.B \-E
+Ignore environment variables like PYTHONPATH and PYTHONHOME that modify
+the behavior of the interpreter.
+.TP
 .B \-t
 Issue a warning when a source file mixes tabs and spaces for
 indentation in a way that makes it depend on the worth of a tab
index c7567f7579533ddbfb693c8437300e8aacbb988a..2fd8f7513bb3b842c52bfb60d8bd0222e5ae1fb6 100644 (file)
@@ -365,7 +365,7 @@ calculate_path(void)
     static char delimiter[2] = {DELIM, '\0'};
     static char separator[2] = {SEP, '\0'};
     char *pythonpath = PYTHONPATH;
-    char *rtpypath = getenv("PYTHONPATH");
+    char *rtpypath = Py_GETENV("PYTHONPATH");
     char *home = Py_GetPythonHome();
     char *path = getenv("PATH");
     char *prog = Py_GetProgramName();
index 72b756be2f99044707703919e076337cbefeebe1..ad2616da04092ee5d02e9c2df607cd3ac090709a 100644 (file)
@@ -28,7 +28,7 @@ static char **orig_argv;
 static int  orig_argc;
 
 /* command line options */
-#define BASE_OPTS "c:diOStuUvxXhVW:"
+#define BASE_OPTS "c:diOSEtuUvxXhVW:"
 
 #ifndef RISCOS
 #define PROGRAM_OPTS BASE_OPTS
@@ -53,6 +53,7 @@ Options and arguments (and corresponding environment variables):\n\
 -O     : optimize generated bytecode (a tad; also PYTHONOPTIMIZE=x)\n\
 -OO    : remove doc-strings in addition to the -O optimizations\n\
 -S     : don't imply 'import site' on initialization\n\
+-E     : ignore environment variables (such as PYTHONPATH)\n\
 -t     : issue warnings about inconsistent tab usage (-tt: issue errors)\n\
 ";
 static char *usage_mid = "\
@@ -108,6 +109,8 @@ Py_Main(int argc, char **argv)
        int stdin_is_interactive = 0;
        int help = 0;
        int version = 0;
+       int saw_inspect_flag = 0;
+       int saw_unbuffered_flag = 0;
        PyCompilerFlags cf;
 
        orig_argc = argc;       /* For Py_GetArgcArgv() */
@@ -117,11 +120,6 @@ Py_Main(int argc, char **argv)
        Py_RISCOSWimpFlag = 0;
 #endif
 
-       if ((p = getenv("PYTHONINSPECT")) && *p != '\0')
-               inspect = 1;
-       if ((p = getenv("PYTHONUNBUFFERED")) && *p != '\0')
-               unbuffered = 1;
-
        PySys_ResetWarnOptions();
 
        while ((c = _PyOS_GetOpt(argc, argv, PROGRAM_OPTS)) != EOF) {
@@ -146,6 +144,7 @@ Py_Main(int argc, char **argv)
 
                case 'i':
                        inspect++;
+                       saw_inspect_flag = 1;
                        Py_InteractiveFlag++;
                        break;
 
@@ -157,12 +156,17 @@ Py_Main(int argc, char **argv)
                        Py_NoSiteFlag++;
                        break;
 
+               case 'E':
+                       Py_IgnoreEnvironmentFlag++;
+                       break;
+
                case 't':
                        Py_TabcheckFlag++;
                        break;
 
                case 'u':
                        unbuffered++;
+                       saw_unbuffered_flag = 1;
                        break;
 
                case 'v':
@@ -210,6 +214,13 @@ Py_Main(int argc, char **argv)
                exit(0);
        }
 
+       if (!saw_inspect_flag &&
+           (p = Py_GETENV("PYTHONINSPECT")) && *p != '\0')
+               inspect = 1;
+       if (!saw_unbuffered_flag &&
+           (p = Py_GETENV("PYTHONUNBUFFERED")) && *p != '\0')
+               unbuffered = 1;
+
        if (command == NULL && _PyOS_optind < argc &&
            strcmp(argv[_PyOS_optind], "-") != 0)
        {
@@ -307,7 +318,7 @@ Py_Main(int argc, char **argv)
        }
        else {
                if (filename == NULL && stdin_is_interactive) {
-                       char *startup = getenv("PYTHONSTARTUP");
+                       char *startup = Py_GETENV("PYTHONSTARTUP");
                        if (startup != NULL && startup[0] != '\0') {
                                FILE *fp = fopen(startup, "r");
                                if (fp != NULL) {
index 0a54a9384787f9771e37d5fdaa68f6575922711f..50e4053674a30a31ae2de889abc2cd64cb138697 100644 (file)
@@ -594,7 +594,7 @@ inittime(void)
        m = Py_InitModule3("time", time_methods, module_doc);
        d = PyModule_GetDict(m);
        /* Accept 2-digit dates unless PYTHONY2K is set and non-empty */
-       p = getenv("PYTHONY2K");
+       p = Py_GETENV("PYTHONY2K");
        ins(d, "accept2dyear", PyInt_FromLong((long) (!p || !*p)));
        /* Squirrel away the module's dictionary for the y2k check */
        Py_INCREF(d);
index 760a5754fcfeac393d0127b1812dbe593cdc2288..f32c9d3159bfa7f42662fa1a957e35fb476e4042 100644 (file)
@@ -425,7 +425,7 @@ calculate_path(void)
        char *buf;
        size_t bufsz;
        char *pythonhome = Py_GetPythonHome();
-       char *envpath = getenv("PYTHONPATH");
+       char *envpath = Py_GETENV("PYTHONPATH");
 
 #ifdef MS_WIN32
        int skiphome, skipdefault;
index 35ce99601ce1877815e4ead21c04d8fd1a7ea985..5860e752c350a791abd87f970fb2658753b97013 100644 (file)
@@ -289,7 +289,7 @@ calculate_path(void)
        char *buf;
        int bufsz;
        char *pythonhome = Py_GetPythonHome();
-       char *envpath = getenv("PYTHONPATH");
+       char *envpath = Py_GETENV("PYTHONPATH");
 #ifdef MS_WIN32
        char *machinepath, *userpath;
 
index a03a2f8ddb0fd6c81eb8eda2ab59401460c16797..efc87d72a3884944dd4cd5c75702c2fe4cf0b506 100644 (file)
@@ -30,9 +30,9 @@ Py_FrozenMain(int argc, char **argv)
 
        Py_FrozenFlag = 1; /* Suppress errors from getpath.c */
 
-       if ((p = getenv("PYTHONINSPECT")) && *p != '\0')
+       if ((p = Py_GETENV("PYTHONINSPECT")) && *p != '\0')
                inspect = 1;
-       if ((p = getenv("PYTHONUNBUFFERED")) && *p != '\0')
+       if ((p = Py_GETENV("PYTHONUNBUFFERED")) && *p != '\0')
                unbuffered = 1;
 
        if (unbuffered) {
index 456a5be6ff7a8fc9d8a451a19f3454e23abbdaea..82524f654dd928bd45a9fdb3046dff70641c4dfc 100644 (file)
@@ -1069,7 +1069,7 @@ case_ok(char *buf, int len, int namelen, char *name)
        char tempbuf[MAX_PATH];
 #endif
 
-       if (getenv("PYTHONCASEOK") != NULL)
+       if (Py_GETENV("PYTHONCASEOK") != NULL)
                return 1;
 
 #ifdef __CYGWIN__
@@ -1092,7 +1092,7 @@ case_ok(char *buf, int len, int namelen, char *name)
        struct ffblk ffblk;
        int done;
 
-       if (getenv("PYTHONCASEOK") != NULL)
+       if (Py_GETENV("PYTHONCASEOK") != NULL)
                return 1;
 
        done = findfirst(buf, &ffblk, FA_ARCH|FA_RDONLY|FA_HIDDEN|FA_DIREC);
@@ -1109,7 +1109,7 @@ case_ok(char *buf, int len, int namelen, char *name)
        FSSpec fss;
        OSErr err;
 
-       if (getenv("PYTHONCASEOK") != NULL)
+       if (Py_GETENV("PYTHONCASEOK") != NULL)
                return 1;
 
 #ifndef USE_GUSI1
@@ -1147,7 +1147,7 @@ case_ok(char *buf, int len, int namelen, char *name)
        char dirname[MAXPATHLEN + 1];
        const int dirlen = len - namelen - 1; /* don't want trailing SEP */
 
-       if (getenv("PYTHONCASEOK") != NULL)
+       if (Py_GETENV("PYTHONCASEOK") != NULL)
                return 1;
 
        /* Copy the dir component into dirname; substitute "." if empty */
index fbc3b16932d6b1ccb5e1cf4e2ea164f92921f73c..c74b0623bb5e1a9b81c9bff92404b9fe01c74c6c 100644 (file)
@@ -63,6 +63,7 @@ int Py_NoSiteFlag; /* Suppress 'import site' */
 int Py_UseClassExceptionsFlag = 1; /* Needed by bltinmodule.c: deprecated */
 int Py_FrozenFlag; /* Needed by getpath.c */
 int Py_UnicodeFlag = 0; /* Needed by compile.c */
+int Py_IgnoreEnvironmentFlag; /* e.g. PYTHONPATH, PYTHONHOME */
 
 static int initialized = 0;
 
@@ -98,11 +99,11 @@ Py_Initialize(void)
                return;
        initialized = 1;
        
-       if ((p = getenv("PYTHONDEBUG")) && *p != '\0')
+       if ((p = Py_GETENV("PYTHONDEBUG")) && *p != '\0')
                Py_DebugFlag = Py_DebugFlag ? Py_DebugFlag : 1;
-       if ((p = getenv("PYTHONVERBOSE")) && *p != '\0')
+       if ((p = Py_GETENV("PYTHONVERBOSE")) && *p != '\0')
                Py_VerboseFlag = Py_VerboseFlag ? Py_VerboseFlag : 1;
-       if ((p = getenv("PYTHONOPTIMIZE")) && *p != '\0')
+       if ((p = Py_GETENV("PYTHONOPTIMIZE")) && *p != '\0')
                Py_OptimizeFlag = Py_OptimizeFlag ? Py_OptimizeFlag : 1;
 
        interp = PyInterpreterState_New();
@@ -225,7 +226,7 @@ Py_Finalize(void)
 #ifdef Py_TRACE_REFS
        if (
 #ifdef MS_WINDOWS /* Only ask on Windows if env var set */
-           getenv("PYTHONDUMPREFS") &&
+           Py_GETENV("PYTHONDUMPREFS") &&
 #endif /* MS_WINDOWS */
            _Py_AskYesNo("Print left references?")) {
                _Py_PrintReferences(stderr);
@@ -394,8 +395,8 @@ char *
 Py_GetPythonHome(void)
 {
        char *home = default_home;
-       if (home == NULL)
-               home = getenv("PYTHONHOME");
+       if (home == NULL && !Py_IgnoreEnvironmentFlag)
+               home = Py_GETENV("PYTHONHOME");
        return home;
 }
 
index 7582b173067a42673953be1aa2ee0f9a33780821..8b36952f3355ce406d316e9937ac255a943a5a21 100644 (file)
@@ -5,7 +5,7 @@ static char *prefix,*exec_prefix,*progpath,*module_search_path=0;
 
 static void
 calculate_path()
-{ char *pypath=getenv("Python$Path");
+{ char *pypath=Py_GETENV("Python$Path");
   if(pypath)
   { module_search_path=malloc(strlen(pypath)+1);
     if (module_search_path) sprintf(module_search_path,"%s",pypath);