[IronPython] change in standard library behavior for compiled .exe/.dll???

Dino Viehland dinov at microsoft.com
Wed Oct 6 20:57:38 CEST 2010


How are you distributing your app?  I'm assuming you're going to have something like:

MyApp\
MyApp.exe
MyApp.dll
IronPython.dll
IronPython.Modules.DLL
...



You should be able to also distribute the standard library and just drop it into a Lib directory next to IronPython.dll:
MyApp\
MyApp.exe
MyApp.dll
IronPython.dll
IronPython.Modules.DLL
...
                Lib\
                                os.py

That lib dir should be on sys.path at startup and so it should be available for importing.

From: users-bounces at lists.ironpython.com [mailto:users-bounces at lists.ironpython.com] On Behalf Of Ken MacDonald
Sent: Wednesday, October 06, 2010 11:42 AM
To: Michael Foord
Cc: Discussion of IronPython
Subject: Re: [IronPython] change in standard library behavior for compiled .exe/.dll???

Hi Michael,
I started out on implementing this, but I am importing maybe a dozen of the std. library modules, which then import others, and so on. It appears that eventually, most of the std modules would have to be imported explicitly (perhaps 400 or so files) which might make for a somewhat cumbersome command line, incidentally also about 20K characters too long :-). I'm hoping to find a way to get this to work as well as it did under IP 2.5 / .NET 3.5.

Noah: what kind of problems are YOU having with pyc.py under 4.0? Maybe one of us can suggest something if we have an understanding of what you're trying to do.
Ken
On Wed, Oct 6, 2010 at 7:08 AM, Michael Foord <michael at voidspace.org.uk<mailto:michael at voidspace.org.uk>> wrote:
On 05/10/2010 22:27, Ken MacDonald wrote:
I've been looking at the .exe's we built - using pyc.py - with IP 2.5/.Net 3.5 and IP2.7 / .NET 4.0. In the 2.7 .exe, it appears that the imports (like "os") are not being built into the .exe/.dll, but instead are required to be imported in source form, e.g. "os.py" must be somewhere on sys.path. In the IP 2.5 .exe's we had been building, they would run fine on machines without the IP standard library installed at all, in other words, with "os.py" not present on the machine at all. We did notice that the .exe in question went from being 2.9 MB in it's IP 2.5 incarnation, down to 1.2 MB in the IP 2.7 version, and the newer version requires that the source code for the IP standard library be on the path. Is this a deliberate change in behavior? We never had to package the standard library source when we sent out .exe's to customers before

Hmmm... I'm pretty sure I always had to explicitly compile and bundle the standard library with previous versions of Python. Odd. Anyway, the simple solution is to ensure that you add any standard library modules you use to the set you compile and ship.


All the best,

Michael Foord




>"os" is not an assembly but a Python module from the standard library. You need to ensure >that the Python standard library (or the parts that you use and their dependencies) is on the >path.

All the best,

Michael Foord


and how do I ensure it gets found from my .exe - is there a specific env. variable, or the Windows %PATH% e.v., or something I haven't AddReference'd to????
Thanks,
Ken




_______________________________________________

Users mailing list

Users at lists.ironpython.com<mailto:Users at lists.ironpython.com>

http://lists.ironpython.com/listinfo.cgi/users-ironpython.com




--

http://www.voidspace.org.uk/blog



READ CAREFULLY. By accepting and reading this email you agree,

on behalf of your employer, to release me from all obligations

and waivers arising from any and all NON-NEGOTIATED agreements,

licenses, terms-of-service, shrinkwrap, clickwrap, browsewrap,

confidentiality, non-disclosure, non-compete and acceptable use

policies ("BOGUS AGREEMENTS") that I have entered into with your

employer, its partners, licensors, agents and assigns, in

perpetuity, without prejudice to my ongoing rights and privileges.

You further represent that you have the authority to release me

from any BOGUS AGREEMENTS on behalf of your employer.





--

http://www.voidspace.org.uk/blog



READ CAREFULLY. By accepting and reading this email you agree,

on behalf of your employer, to release me from all obligations

and waivers arising from any and all NON-NEGOTIATED agreements,

licenses, terms-of-service, shrinkwrap, clickwrap, browsewrap,

confidentiality, non-disclosure, non-compete and acceptable use

policies ("BOGUS AGREEMENTS") that I have entered into with your

employer, its partners, licensors, agents and assigns, in

perpetuity, without prejudice to my ongoing rights and privileges.

You further represent that you have the authority to release me

from any BOGUS AGREEMENTS on behalf of your employer.

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/ironpython-users/attachments/20101006/ffdd92bb/attachment.html>


More information about the Ironpython-users mailing list