Matthias Baas wrote:
are there any guidelines about what to do if a Windows extension for
Python 2.4 requires the C++ runtime (msvcp71.dll)?

No; it should "just work fine". The standard guidelines apply, of course: never try to mix different versions of similar DLLs.

If I want to
distribute a binary installer of an extension that contains C++ code,
should I really include the msvcp71.dll in the package?

If you cannot expect your users to have that file, you should distribute it. Make sure you have read and understood the Microsoft license concerning the file.

It doesn't
sound like a good idea to me if every package places another copy of
this dll somewhere in the Python directory.

Why not? If your installer follows Windows logo compliance rules, it should check whether the DLL is already present; if it is, it should check whether the version installed is newer than the one it would install, and if so, should skip installation.

Python 2.4 does install the C runtime (msvcr71.dll) in the Windows
system32 directory, doesn't it?

It depends. If this is an allusers installation, it does so. For a per-user installation, the user might not have sufficient privileges to install into system32, so the installer won't install it there.

(btw, shouldn't this be installed in
the Python directory instead?)

No. If you install the DLL into the Python directory, Python will not work anymore because python24.dll (installed into system32) will not find this DLL. If you then also move python24.dll into the Python directory, COM components that require python24.dll will fail to run.

So would it be possible that future
Python releases would also install the C++ runtime?

Why should it? Nothing in the Python distribution requires C++.

I think it's
better if the dll would only be installed once by Python instead of
several times by every extension that uses C++.

Why is that better? The DLL versioning rules, and the shared DLL refcounting mechanisms will make sure that the installation works just fine.

Currently, I do not package the C++ runtime and leave it up to the
user to install the dll if it isn't already somewhere on his system.
But this really is not a satisfying solution...

Then you should probably include the DLL, or rewrite your extension to not use C++.

Regards,
Martin
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to