Embedded Python import fails with zip/egg files (v3.6.1)
Griebel, Herbert
herbertg at gmx.at
Thu May 11 17:02:45 EDT 2017
Hello,
I am having trouble importing python modules on certain machines. On
some machines import works, on some not (all machines are Win7 64bit).
Python is not installed on any of these machines but used embedded. I
tried to analyze the problem but did not succeed so here is what I found.
First I will use the module xlsxwriter to explain the problem but it
also happens with python36.zip (when importing for example codecs).
I have a xlsxwriter.egg file which is found by the import mechanism but
it cannot be opened.
/Traceback (most recent call last):/
//
/File "Z:\Documents\///myscript/.py", line 1, in <module>/
/import glob, inspect, os, json, base64, xlsxwriter, datetime, string/
/ModuleNotFoundError: No module named 'xlsxwriter'/
When I unzip the egg and create two folders, for code and egg-info, it
works, the module is imported.
Again, the very same egg file works fine on other machines. Tested on
win7 with or without python installed, and freshly setup win7 systems
with nothing else installed.
I have the same problem with python36.zip that comes with the embedded
package.
When starting python.exe (from
https://www.python.org/ftp/python/3.6.1/python-3.6.1-embed-win32.zip)
the codecs module cannot be imported and
python.exe crashes. All paths are correctly set. When I unzip the
python36.zip into the python.exe folder everything works fine.
What I found interesting is that the disk monitor tool (Procmon.exe)
shows following detail:
07:59:04,3187854 python.exe 4224 CreateFile
C:\Users\hansi\Downloads\python-emb\python36.zip SUCCESS Desired
Access: Read Attributes, Synchronize, Disposition: Open, Options:
Synchronous IO Non-Alert, Attributes: n/a, ShareMode: Read, Write,
Delete, AllocationSize: n/a, OpenResult: Opened
07:59:04,3198189 python.exe 4224 CloseFile
C:\Users\hansi\Downloads\python-emb\python36.zip SUCCESS
07:59:04,3205458 python.exe 4224 CreateFile
C:\Users\hansi\Downloads\python-emb\python36.zip SUCCESS Desired
Access: Read Attributes, Synchronize, Disposition: Open, Options:
Synchronous IO Non-Alert, Open Reparse Point, Attributes: N, ShareMode:
None, AllocationSize: n/a, OpenResult: Opened
07:59:04,3205860 python.exe 4224 QueryInformationVolume
C:\Users\hansi\Downloads\python-emb\python36.zip SUCCESS
VolumeCreationTime: 05.05.2015 12:28:45, VolumeSerialNumber: 36B5-A026,
SupportsObjects: True, VolumeLabel: OS
07:59:04,3206127 python.exe 4224 QueryAllInformationFile
C:\Users\hansi\Downloads\python-emb\python36.zip BUFFER OVERFLOW
CreationTime: 18.04.2017 06:07:23, LastAccessTime: 18.04.2017 06:07:23,
LastWriteTime: 21.03.2017 09:06:10, ChangeTime: 18.04.2017 06:07:23,
FileAttributes: N, AllocationSize: 2.228.224, EndOfFile: 2.224.303,
NumberOfLinks: 1, DeletePending: False, Directory: False, IndexNumber:
0x20000000a9467, EaSize: 0, Access: Read Attributes, Synchronize,
Position: 0, Mode: Synchronous IO Non-Alert, AlignmentRequirement: Word
The interesting line is the one with QueryAllInformationFile and BUFFER
OVERFLOW. On machines where it works the buffer overflow does not happen
and the query is done with QueryBasicInformationFile and not
QueryInformationVolume.
Since QueryInformationVolume is most likely only for folders, maybe
there is a problem with that.
Here is the log when it's working:
06:30:39,6650716 python.exe 30176 CreateFile
C:\Projects\Python\rt_win32\python36.zip SUCCESS Desired Access:
Read Attributes, Synchronize, Disposition: Open, Options: Synchronous IO
Non-Alert, Attributes: n/a, ShareMode: Read, Write, Delete,
AllocationSize: n/a, OpenResult: Opened
06:30:39,6652657 python.exe 30176 QueryBasicInformationFile
C:\Projects\Python\rt_win32\python36.zip SUCCESS CreationTime:
15.02.2017 13:34:03, LastAccessTime: 15.02.2017 13:34:03, LastWriteTime:
22.12.2016 23:30:40, ChangeTime: 18.04.2017 06:19:36, FileAttributes: A
06:30:39,6673617 python.exe 30176 QueryStandardInformationFile
C:\Projects\Python\rt_win32\python36.zip SUCCESS AllocationSize:
2.240.512, EndOfFile: 2.237.601, NumberOfLinks: 1, DeletePending: False,
Directory: False
Any help is appreciated!
Thanks,
Herb
More information about the Python-list
mailing list