Esta é a solução que acabei usando:
import pip
def install(package):
# Debugging
# pip.main(["install", "--pre", "--upgrade", "--no-index",
# "--find-links=.", package, "--log-file", "log.txt", "-vv"])
pip.main(["install", "--upgrade", "--no-index", "--find-links=.", package])
if __name__ == "__main__":
install("mypackagename")
raw_input("Press Enter to Exit...\n")
Eu juntei isso a partir dos exemplos de instalação do pip e da resposta de Rikard em outra pergunta . O argumento "--pre" permite instalar versões que não são de produção. O argumento "--no-index" evita pesquisar nos índices PyPI. O "--find-links =." pesquisas de argumento na pasta local (isso pode ser relativo ou absoluto). Eu usei os argumentos "--log-file", "log.txt" e "-vv" para depuração. O argumento "--upgrade" permite instalar versões mais recentes sobre as mais antigas.
Eu também encontrei uma boa maneira de desinstalá-los. Isso é útil quando você possui vários ambientes Python diferentes. É o mesmo formato básico, basta usar "uninstall" em vez de "install", com uma medida de segurança para evitar desinstalações não intencionais:
import pip
def uninstall(package):
response = raw_input("Uninstall '%s'? [y/n]:\n" % package)
if "y" in response.lower():
# Debugging
# pip.main(["uninstall", package, "-vv"])
pip.main(["uninstall", package])
pass
if __name__ == "__main__":
uninstall("mypackagename")
raw_input("Press Enter to Exit...\n")
A pasta local contém estes arquivos: install.py, uninstall.py, mypackagename-1.0.zip
pip install <Path-to-WHL-file>
.