[Python-es] Duda con distribución de software (dll MSVCR90 y otras)

Chema Cortes pych3m4 en gmail.com
Mie Mayo 19 11:48:58 CEST 2010


El día 18 de mayo de 2010 20:57, Boris Perez Canedo
<inf200523 en ucf.edu.cu> escribió:

> Acabo de terminar una aplicación en python y al compilarla me pone al final
> un grupo de dlls de las cuales mi sistema depende. Mi pregunta es la
> siguiente: Puedo redistribuir las dlls cuya ruta de acceso están por debajo
> del directorio de instalación de python, o sea, que no son del sistema
> operativo? Me salta esta duda porque hace poco lei un tutorial de py2exe y
> en la última sección venía como obtener la dll MSVCR90 y hablaba de los
> permisos de distribución, luego encontré un hilo aquí que explicaba cómo
> obtener dicha dll fácilmente. Según entendí en el hilo la MSVCR90 viene por
> que los binarios de python para Windows se compilan con Microsoft Visual C++
> 9 y que podía encontrarla en el directorio de intalación de python si lo
> instalaba en modo ¨solo para este usuario¨.
> Entonces hay o no problemas al incluir esta o cualquier otra dll que este en
> el directorio de python e intentar redistribuir el software?

La librerías de Microsoft VC++ que usa python son librerías
redistribuibles bajo ciertas restricciones. Estas librerías se
instalan en el sistema (no en el directorio python) y son:

msvcr90.dll
msvcp90.dll
msvcm90.dll

Las restricciones vienen explicadas dentro del fichero LICENSE.txt.
Resumidamente vienen a decir que debes respetar el copyright de
microsoft, que quede claro que tu aplicación no proviene de microsoft
y que no vas a usar estas librerías para cualquier "ilegalidad" :-P

Pero te diría más: se recomienda distribuir estas DLLs junto con el
ejecutable ("side-by-side") para evitar así problemas con otras
versiones que estén instaladas en el sistema. Pero ten en cuenta que
con win2k no funcionaría, ya que se requiere instalar siempre estas
DLLs en el sistema (basta con ejecutar el "Visual C++ Redistributable
Package") y que hay tres versiones diferentes según la arquitectura:
i686, x64 e ia64.



Más información sobre la lista de distribución Python-es