-from test.test_support import TESTFN, run_unittest, catch_warning
+from test.test_support import TESTFN, run_unittest, catch_warning
import unittest
import os
warnings.simplefilter('error', ImportWarning)
self.assertRaises(ImportWarning, __import__, "site-packages")
+ def test_importbyfilename(self):
+ path = os.path.abspath(TESTFN)
+ try:
+ __import__(path)
+ except ImportError, err:
+ self.assertEqual("Import by filename is not supported.",
+ err.args[0])
+ else:
+ self.fail("import by path didn't raise an exception")
+
class PathsTests(unittest.TestCase):
path = TESTFN
Core and builtins
-----------------
+- Bug #1776: __import__ must not accept filenames. Python 2.6 does no longer
+ support module loading by filename. It worked on some system by coincident
+ but it was never intended to work.
+
- Patch #1668: renamed THREADDEBUG envvar to PYTHONTHREADDEBUG.
- Patch #602345: Add -B command line option, PYTHONDONTWRITEBYTECODE envvar
Py_ssize_t buflen = 0;
PyObject *parent, *head, *next, *tail;
+ if (strchr(name, '/') != NULL
+#ifdef MS_WINDOWS
+ || strchr(name, '\\') != NULL
+#endif
+ ) {
+ PyErr_SetString(PyExc_ImportError,
+ "Import by filename is not supported.");
+ return NULL;
+ }
+
parent = get_parent(globals, buf, &buflen, level);
if (parent == NULL)
return NULL;