Jason R. Coombs <[email protected]> added the comment:
I've made some progress on this issue. Thanks to Waldemar's findings, I'm able
to selectively reproduce the issue by installing/uninstalling the Visual C++
redistributable that includes KB2467174 on a Windows 7 RTM installation.
So I added a patch to cpython to help troubleshoot:
PS C:\Users\jaraco\projects\public\cpython\pcbuild> hg id
434dfe42fde1+
PS C:\Users\jaraco\projects\public\cpython\pcbuild> hg diff
diff -r 434dfe42fde1 Python/import.c
--- a/Python/import.c Sun May 15 13:16:22 2011 +0200
+++ b/Python/import.c Mon May 16 10:52:45 2011 -0400
@@ -1807,6 +1807,15 @@
/* Check for package import (buf holds a directory name,
and there's an __init__ module in that directory */
#ifdef HAVE_STAT
+ if (Py_VerboseFlag > 1 && _Py_stat(filename, &statbuf) == 0) {
+ PySys_FormatStderr("stat_mode %U: %d\n",
+ filename, statbuf.st_mode);
+ }
+ else if(Py_VerboseFlag > 1)
+ {
+ PySys_FormatStderr("_Py_stat(%U) returned %d\n",
+ filename, _Py_stat(filename, &statbuf));
+ }
if (_Py_stat(filename, &statbuf) == 0 && /* it exists */
S_ISDIR(statbuf.st_mode)) /* it's a directory */
{
I then ran the test script without vcredist:
C:\Users\Jason R.
Coombs\Desktop>u:\users\jaraco\projects\public\cpython\pcbuild\amd64\python -vv
.\test_import_symlink_package.py 2>&1 | findstr sample
stat_mode .\sample: 16895
import sample # directory '.\\sample'
_Py_stat(.\sample\__init__) returned -1
# trying '.\\sample\\__init__.pyd'
# trying '.\\sample\\__init__.py'
import sample # from '.\\sample\\__init__.py'
# wrote '.\\sample\\__pycache__\\__init__.cpython-32.pyc'
# cleanup[1] sample
And again with the vcredist installed:
C:\Users\Jason R.
Coombs\Desktop>u:\users\jaraco\projects\public\cpython\pcbuild\amd64\python -vv
.\test_import_symlink_package.py 2>&1 | findstr sample
_Py_stat(.\sample) returned -1
# trying '.\\sample.pyd'
# trying '.\\sample.py'
# trying '.\\sample.pyw'
# trying '.\\sample.pyc'
No module named 'sample'
Basically, it appears that with the later vcredist installed, _Py_stat is
returning -1 for symlink directories.
----------
versions: +Python 3.3
_______________________________________
Python tracker <[email protected]>
<http://bugs.python.org/issue6727>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe:
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com