Pergunta

Existe uma maneira de fazer uma carga módulo python uma dll em meu diretório do aplicativo em vez da versão que veio com a instalação python, sem fazer alterações na instalação python (que então requerem Fiz um instalador, e ter cuidado eu não quebrar outros aplicativos para as pessoas por overwrting módulos python e mudando dll versões globaly ...)?

Especificamente gostaria python para usar a minha versão da sqlite3.dll, em vez da versão que veio com python (que é mais velho e não parece ter o módulo fts3).

Foi útil?

Solução 2

Ok, terns fora python sempre carrega a dll no mesmo diretório que o arquivo PYD, independentemente do que os caminhos python e OS são definidas para.

Então eu precisava para copiar o _sqlite3.pyd de Python / v2.5 / DLLS ao meu directório de aplicações onde o novo sqlite3.dll é, tornando-se carregar a minha nova dll, ao invés do que vem com o Python (uma vez que o PYD arquivos parecem seguir o PYTHONPATH, embora o actaul dlls si não).

Outras dicas

Se você está falando sobre Python módulo DLLs, então simplesmente modificando sys.path deve ser fino. No entanto, se você está falando sobre DLLs ligado contra as DLLs; ou seja, um libfoo.dll que um foo.pyd depende, então você precisa modificar sua variável de ambiente PATH. Eu escrevi sobre fazendo isso para PyGTK um tempo atrás, mas no seu caso eu acho que deveria ser tão simples como:

import os
os.environ['PATH'] = 'my-app-dir' + os.pathsep + os.environ['PATH']

Isso irá inserir my-app-dir à frente de seu caminho do Windows, que eu acredito que também controla a carga ordem para DLLs.

Tenha em mente que você terá que fazer isso antes de carregar a DLL em questão, ou seja, antes de importar alguma coisa interessante.

sqlite3 pode ser um pouco de um caso especial, no entanto, uma vez que é distribuído com Python; é obviamente tipo de difícil de testar isso rapidamente, então eu não tenho verificado sqlite3.dll especificamente.

Se a sua versão do SQLite está em sys.path antes a versão sistemas que vai usar isso. Então você pode colocá-lo no diretório atual ou alterar a variável de ambiente PYTHONPATH para fazer isso.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top