Preciso instalar um pacote do PyPi diretamente no meu script. Talvez haja algum módulo ou recurso distutils
( distribute
, pip
etc.) que permita executar algo como pypi.install('requests')
e solicitações serão instaladas no meu virtualenv.
python
pip
python-module
pypi
chuwy
fonte
fonte
pip
nunca é uma boa ideia - o simples facto de todo o seu conteúdo estão_internal
na partir da versão 10 ...pip._internal
não foi projetado para ser importável, ele pode fazer coisas absolutamente aleatórias quando importado em outro programa.Respostas:
A maneira oficialmente recomendada de instalar pacotes a partir de um script é chamando a interface da linha de comandos do pip por meio de um subprocesso. A maioria das outras respostas apresentadas aqui não são suportadas pelo pip . Além disso, desde o pip v10, todo o código foi movido para
pip._internal
precisamente para deixar claro aos usuários que o uso programático do pip não é permitido.Use
sys.executable
para garantir que você chamará o mesmopip
associado ao tempo de execução atual.fonte
Você também pode usar algo como:
fonte
pip.main()
como faria na linha de comando (mas com cada opção como uma entrada separada na lista, em vez de uma única string). E para especificar qual versão do pacote você deseja, faça o mesmo que na linha de comando .. ex:pip.main(['install', 'pip==7.1.0'])
from pip._internal import main as pipmain
então você pode usarpipmain()
exatamente como o obsoleto,pip.main()
veja stackoverflow.com/questions/43398961/…Se você deseja usar
pip
para instalar o pacote necessário e importá-lo após a instalação, você pode usar este código:Se você instalou um pacote como usuário, poderá encontrar o problema de que não pode apenas importar o pacote. Consulte Como atualizar o sys.path? para informações adicionais.
fonte
imp.reload(site)
me recebeRuntimeError: dictionary changed size during iteration
pip uninstall <package_name>
. Ainda posso desinstalá-lo usando,pip.main
mas só queria saber onde ele instala o pacote?pip install requests[security]
:? Eu não tinha certeza se definiria corretamente os globais corretamente.pip.main
não funciona mais. pip.pypa.io/en/latest/user_guide/#using-pip-from-your-programIsso deve funcionar:
fonte
[sys.executable, '-m', 'pip', 'install', name]
é garantir o pip "certo" aqui.Eu adicionei algumas exceções à resposta do @ Aaron.
fonte
subprocess.call
para que o código possa falhar.Você define o módulo dependente dentro do setup.py do seu próprio pacote com a opção "install_requires".
Se o seu pacote precisar ter algum script do console gerado, você poderá usar o ponto de entrada "console_scripts" para gerar um script de wrapper que será colocado na pasta 'bin' (por exemplo, do seu ambiente de virtualenv).
fonte