summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Include/pydebug.h6
-rw-r--r--Makefile.pre.in20
-rw-r--r--Misc/python.man7
-rw-r--r--Modules/getpath.c2
-rw-r--r--Modules/main.c25
-rw-r--r--Modules/timemodule.c2
-rw-r--r--PC/getpathp.c2
-rw-r--r--PC/os2vacpp/getpathp.c2
-rw-r--r--Python/frozenmain.c4
-rw-r--r--Python/import.c8
-rw-r--r--Python/pythonrun.c13
-rw-r--r--RISCOS/Modules/getpath_riscos.c2
12 files changed, 59 insertions, 34 deletions
diff --git a/Include/pydebug.h b/Include/pydebug.h
index 0372401..94ea352 100644
--- a/Include/pydebug.h
+++ b/Include/pydebug.h
@@ -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);
diff --git a/Makefile.pre.in b/Makefile.pre.in
index dc63519..139be8b 100644
--- a/Makefile.pre.in
+++ b/Makefile.pre.in
@@ -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
diff --git a/Misc/python.man b/Misc/python.man
index 2697bc7..723d714 100644
--- a/Misc/python.man
+++ b/Misc/python.man
@@ -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
diff --git a/Modules/getpath.c b/Modules/getpath.c
index c7567f7..2fd8f75 100644
--- a/Modules/getpath.c
+++ b/Modules/getpath.c
@@ -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();
diff --git a/Modules/main.c b/Modules/main.c
index 72b756b..ad2616d 100644
--- a/Modules/main.c
+++ b/Modules/main.c
@@ -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) {
diff --git a/Modules/timemodule.c b/Modules/timemodule.c
index 0a54a93..50e4053 100644
--- a/Modules/timemodule.c
+++ b/Modules/timemodule.c
@@ -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);
diff --git a/PC/getpathp.c b/PC/getpathp.c
index 760a575..f32c9d3 100644
--- a/PC/getpathp.c
+++ b/PC/getpathp.c
@@ -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;
diff --git a/PC/os2vacpp/getpathp.c b/PC/os2vacpp/getpathp.c
index 35ce996..5860e75 100644
--- a/PC/os2vacpp/getpathp.c
+++ b/PC/os2vacpp/getpathp.c
@@ -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;
diff --git a/Python/frozenmain.c b/Python/frozenmain.c
index a03a2f8..efc87d7 100644
--- a/Python/frozenmain.c
+++ b/Python/frozenmain.c
@@ -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) {
diff --git a/Python/import.c b/Python/import.c
index 456a5be..82524f6 100644
--- a/Python/import.c
+++ b/Python/import.c
@@ -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 */
diff --git a/Python/pythonrun.c b/Python/pythonrun.c
index fbc3b16..c74b062 100644
--- a/Python/pythonrun.c
+++ b/Python/pythonrun.c
@@ -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;
}
diff --git a/RISCOS/Modules/getpath_riscos.c b/RISCOS/Modules/getpath_riscos.c
index 7582b17..8b36952 100644
--- a/RISCOS/Modules/getpath_riscos.c
+++ b/RISCOS/Modules/getpath_riscos.c
@@ -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);