Problem solved!  In the spec file, I had the values in the tuple for a.datas
in the wrong order.  I had been trying to use

a.datas += [('c:\\fdu\zeus.p12','DATA','zeus.p12')]

when it should have been

a.datas += [('zeus.p12','c:\\fdu\\zeus.p12','DATA')]

Once I changed that, Build.py succeeds, zeus.p12 is included in the .exe
file and is available in the run-time temp directory.

On Wed, Mar 31, 2010 at 1:56 PM, Peter Scheie <[email protected]> wrote:

> Update: Following the suggestion from Build.py (hey, there's a novel idea),
> I installed pywin32, and now Build.py runs successfully, and I get
> copyfile.exe.  That's the good news.  The bad news is that when I run
> copyfile.exe I still get the error about it not being able to find the file
> I added in as data ("zeus.p12"):
>
> C:\fdu\dist>copyfile
> Enter a letter: d
>
> Traceback (most recent call last):
>   File "<string>", line 13, in <module>
>   File "C:\fdu\build\pyi.win32\copyfile\outPYZ1.pyz/shutil", line 85, in
> copy
>   File "C:\fdu\build\pyi.win32\copyfile\outPYZ1.pyz/shutil", line 51, in
> copyfil
> e
> IOError: [Errno 2] No such file or directory:
> 'C:/DOCUME~1/PSCHEI~1.VSI/LOCALS~1
> /Temp/_MEI13162/zeus.p12'
>
> The temporary directory IS being created, and there are some files in
> there, but my zeus.p12 file is not in there.  Here are the files that are in
> there
>
> 03/31/2010  01:38 PM    <DIR>          .
> 03/31/2010  01:38 PM    <DIR>          ..
> 03/31/2010  01:38 PM            32,768 bz2.pyd
> 03/31/2010  01:38 PM           155,648 MSVCR71.dll
> 03/31/2010  01:38 PM            13,312 POWRPROF.dll
> 03/31/2010  01:38 PM           750,592 python25.dll
> 03/31/2010  01:38 PM            51,712 pywintypes25.dll
> 03/31/2010  01:38 PM           142,848 unicodedata.pyd
> 03/31/2010  01:38 PM            31,744 win32api.pyd
>                7 File(s)      1,178,624 bytes
>
> The spec file, with the added a.datas is listed in my previous message.
> So, I'm closer, but not quite there yet.  Anything obvious that I'm missing?
>
>
> On Wed, Mar 31, 2010 at 11:39 AM, Peter Scheie <[email protected]> wrote:
>
>> Short answer: The directory is there (I was mistaken about it being
>> missing), but the file my script uses is not.
>>
>> Long answer: I wonder if I've somehow got something weird in my
>> environments.  As mentioned in my other topic, I was able to run the
>> Build.py script with my real project and with a test script called
>> copyfile.py if I had the files on the C: drive in the Windows XP VM
>> (VirtualBox) on my Ubuntu 9.04 laptop at home; if the files were on a
>> network mapped drive, I got "No such file or directory: 'DATA'" errors, and
>> I am getting those same errors on the XP VM on Ubuntu 9.10 on my machine at
>> the office.  Today, I brought my laptop from home into the office, and now
>> I'm getting the same "No such file or directory: 'DATA'" error, where it had
>> been working fine just last night.  So, here's my simple script, called
>> copyfile.py:
>>
>> #!/usr/bin/python
>> # Copy a file.  The file is included in the --onefile output of
>> pyinstaller.
>> import os
>> import shutil
>> # prompts for input are so I can see what is happening
>> ans = raw_input("Enter a letter: ")
>> src = os.path.join(os.environ['_MEIPASS2'], 'zeus.p12')
>> dest = "./Bzeus.p12"
>> shutil.copy(src,dest)
>> ans = raw_input("Enter a number: ")
>>
>> The script sits in c:\fdu, so then, while I'm in the c:\fdu directory I
>> run
>> c:\python25\python.exe c:\pyinstaller\Makespec.py -X --onefile copyfile.py
>>
>> and it responds
>> wrote C:\fdu\copyfile.spec
>> now run Build.py to build the executable
>>
>> Then I edit the spec file, adding the a.datas line, so that it looks like
>> this:
>> # -*- mode: python -*-
>> a = Analysis([os.path.join(HOMEPATH,'support\\_mountzlib.py'),
>> os.path.join(HOMEPATH,'support\\useUnicode.py'), 'copyfile.py'],
>>              pathex=['C:\\fdu'])
>> a.datas += [('C:\\fdu\\zeus.p12','DATA','zeus.p12')]
>> pyz = PYZ(a.pure)
>> exe = EXE( pyz,
>>           a.scripts,
>>           a.binaries,
>>           a.zipfiles,
>>           a.datas,
>>           name=os.path.join('dist', 'copyfile.exe'),
>>           debug=False,
>>           strip=False,
>>           upx=True,
>>           console=True )
>>
>> Then I run
>> c:\python25\python.exe c:\pyinstaller\Build.py copyfile.spec
>>
>> At home on my laptop it worked,  (I don't have the output handy) producing
>> copyfile.exe, but which then gave an error about not being able to find the
>> zeus.p12 file.  But now on that same laptop but in the office, as well as on
>> my office machine, it gives me this:
>>
>> checking Analysis
>> building because copyfile.py changed
>> running Analysis outAnalysis0.toc
>> Analyzing: c:\pyinstaller\support\_mountzlib.py
>> Analyzing: c:\pyinstaller\support\useUnicode.py
>> Analyzing: copyfile.py
>> W: Cannot determine your Windows or System directories
>> W: Please add them to your PATH if .dlls are not found
>> W: or install http://sourceforge.net/projects/pywin32/
>> C:\fdu\build\pyi.win32\copyfile\outAnalysis0.toc no change!
>> checking PYZ
>> checking PKG
>> building because copyfile.py changed
>> building PKG outPKG3.pkg
>> Cannot find ('C:\fdu\zeus.p12', 'DATA', 0, 'b')
>> Traceback (most recent call last):
>>   File "c:\pyinstaller\Build.py", line 1160, in <module>
>>     main(args[0], configfilename=opts.configfile)
>>   File "c:\pyinstaller\Build.py", line 1148, in main
>>     build(specfile)
>>   File "c:\pyinstaller\Build.py", line 1111, in build
>>     execfile(spec)
>>   File "copyfile.spec", line 15, in <module>
>>     console=True )
>>   File "c:\pyinstaller\Build.py", line 661, in __init__
>>     strip_binaries=self.strip, upx_binaries=self.upx, crypt=self.crypt)
>>   File "c:\pyinstaller\Build.py", line 561, in __init__
>>     self.__postinit__()
>>   File "c:\pyinstaller\Build.py", line 196, in __postinit__
>>     self.assemble()
>>   File "c:\pyinstaller\Build.py", line 618, in assemble
>>     archive.build(self.name, mytoc)
>>   File "c:\pyinstaller\archive.py", line 229, in build
>>     self.add(tocentry)   # the guts of the archive
>>   File "c:\pyinstaller\carchive.py", line 235, in add
>>     s = open(pathnm, 'rb').read()
>> IOError: [Errno 2] No such file or directory: 'DATA'
>>
>> I must be doing something incorrectly, but I can't see what it is.
>> Perhaps it's related to the warning about it not being able to determine the
>> Windows or System directories (?).
>>
>> Peter
>>
>>
>>
>> On Wed, Mar 31, 2010 at 4:34 AM, Giovanni Bajo <[email protected]> wrote:
>>
>>> On Tue, 2010-03-30 at 20:08 -0600, Peter Scheie wrote:
>>> > In my python script, I'm trying to copy a file from
>>> > os.environ['_MEIPASS2'], which appears to point to
>>> > C:/DOCUME~1/PETER/LOCALS~1/Temp/_MEI5322/. The file is supposed to be
>>> > placed there by the a.datas method in the spec file. However, the
>>> > directory doesn't exist.  Is this something I have to create in my
>>> > script so that the script can place the file (included in the .exe)
>>> > there at run time?  I was under the impression that it was created
>>> > automatically/dynamically.
>>>
>>> The directory is created at startup and removed after the application
>>> exits. I am not aware of any bug where _MEIPASS2 at runtime points to a
>>> directory which it does not exist, and it sounds very weird to me.
>>>
>>> Can you reproduce your problem with a working program that you can
>>> share?
>>>
>>>
>>> --
>>> Giovanni Bajo   ::  [email protected]
>>> Develer S.r.l.  ::  http://www.develer.com
>>>
>>> My Blog: http://giovanni.bajo.it
>>> Last post: C++ and copy-on-write data structures
>>>
>>> --
>>> You received this message because you are subscribed to the Google Groups
>>> "PyInstaller" group.
>>> To post to this group, send email to [email protected].
>>> To unsubscribe from this group, send email to
>>> [email protected]<pyinstaller%[email protected]>
>>> .
>>> For more options, visit this group at
>>> http://groups.google.com/group/pyinstaller?hl=en.
>>>
>>>
>>
>

-- 
You received this message because you are subscribed to the Google Groups 
"PyInstaller" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/pyinstaller?hl=en.

Reply via email to