python - pip install wheel
dlls del módulo python (3)
¿Hay alguna manera de hacer que un módulo de Python cargue un dll en mi directorio de aplicaciones en lugar de la versión que vino con la instalación de python, sin hacer cambios en la instalación de Python (lo que requeriría que yo creara un instalador y tenga cuidado de no hacerlo? romper otras aplicaciones para las personas mediante la sobreexplotación de los módulos de python y el cambio de las versiones dll globaly ...)?
Específicamente, me gustaría que python use mi versión de sqlite3.dll, en lugar de la versión que viene con python (que es más antigua y no parece tener el módulo fts3).
Ok, dice que python siempre carga el dll en el mismo directorio que el archivo pyd, independientemente de en qué se establezcan las rutas python y os.
Así que necesitaba copiar el _sqlite3.pyd de python / v2.5 / DLLS a mi directorio de aplicaciones donde está el nuevo sqlite3.dll, haciendo que cargue mi nuevo dll, en lugar del que viene con python (ya que los archivos pyd parecen seguir la PYTHONPATH, a pesar de que los actaul dlls no lo hacen).
Si su versión de sqlite está en sys.path antes de la versión del sistema, lo usará. Entonces puede colocarlo en el directorio actual o cambiar la variable de entorno PYTHONPATH
para hacer eso.
Si está hablando de DLL de módulos de Python, entonces simplemente modificar sys.path
debería estar bien. Sin embargo, si está hablando de archivos DLL vinculados con esos archivos DLL; es decir, un libfoo.dll
que depende foo.pyd
, entonces necesita modificar la variable de entorno PATH. Escribí sobre hacer esto para PyGTK hace un tiempo , pero en su caso creo que debería ser tan simple como:
import os
os.environ[''PATH''] = ''my-app-dir'' + '';'' + os.environ[''PATH'']
Eso insertará my-app-dir
en la cabeza de tu ruta de Windows, que creo que también controla el orden de carga de las DLL.
Tenga en cuenta que deberá hacer esto antes de cargar el archivo DLL en cuestión, es decir, antes de importar algo interesante.
sqlite3 puede ser un poco un caso especial, sin embargo, ya que se distribuye con Python; obviamente es un poco complicado probar esto rápidamente, así que no he comprobado específicamente sqlite3.dll
.