Posso usar o `pip` em vez do` easy_install` para a resolução de dependência do `python setup.py install`?


137

python setup.py installinstalará automaticamente os pacotes listados em requires=[]usando easy_install. Como faço para usá-lo pip?

Respostas:


133

Sim você pode. Você pode instalar um pacote a partir de um tarball ou uma pasta, na web ou no seu computador. Por exemplo:

Instalar a partir do tarball na web

pip install https://pypi.python.org/packages/source/r/requests/requests-2.3.0.tar.gz

Instalar do tarball local

wget https://pypi.python.org/packages/source/r/requests/requests-2.3.0.tar.gz
pip install requests-2.3.0.tar.gz

Instalar a partir da pasta local

tar -zxvf requests-2.3.0.tar.gz
cd requests-2.3.0
pip install .

Você pode excluir a requests-2.3.0pasta.

Instalar a partir da pasta local (modo editável)

pip install -e .

Isso instala o pacote no modo editável . Quaisquer alterações feitas no código serão aplicadas imediatamente em todo o sistema. Isso é útil se você é o desenvolvedor do pacote e deseja testar as alterações. Isso também significa que você não pode excluir a pasta sem interromper a instalação.


10
Se você está acostumado a usar "python setup.py install" para instalar pacotes, é natural perguntar como obter "python setup.py install" para resolver dependências com o pip, mas é a pergunta errada. A solução é instalar o pacote com o pip e parar de usar "setup.py install".
Joeforker

8
O problema @joeforker é que você pode ser forçado a usar o easy_install se fizer algo parecido com #python setup.py test
TomDotTom 22/17/17

1
@TomDotTom alguma idéia de como forçar o uso de pip durante a execução setup.py test, por favor?
Jan Sila

@joeforker, pip usa setup.pynos bastidores. Se eu quiser que as pessoas possam instalar meu pacote com o pip, preciso criar um setup.pyarquivo.
cowlinator

Se você quiser uma prova disso, tente pip install -e git+https://github.com/octocat/Hello-World.git#egg=Hello-World. O erro éNo such file or directory: 'c:\python\src\Hello-World\setup.py
cowlinator 24/10/19

110

Você pode pip installum arquivo talvez python setup.py sdistprimeiro. Você também pode pip install -e .como é python setup.py develop.


14
Apenas um aviso para quem está tentando isso: Observe que pip install -eum diretório é usado como argumento, não o setup.pyarquivo em si. No começo eu não percebi o período em pip install -e .que me causou alguma confusão :)
Markus Amalthea Magnuson

3
obrigado, com pip install -e .posso instalar, mas com o pip, como posso desinstalar do modo editável?
19414 JuanPablo

2
As instalações editáveis ​​são desinstaladas com um 'pip uninstall <nome do pacote>' comum
joeforker

4

Se você realmente estiver usando, python setup.py installpode tentar algo como isto:

from setuptools import setup, find_packages
from setuptools.command.install import install as InstallCommand


class Install(InstallCommand):
    """ Customized setuptools install command which uses pip. """

    def run(self, *args, **kwargs):
        import pip
        pip.main(['install', '.'])
        InstallCommand.run(self, *args, **kwargs)


setup(
    name='your_project',
    version='0.0.1a',
    cmdclass={
        'install': Install,
    },
    packages=find_packages(),
    install_requires=['simplejson']
)

1
Obrigado, mas estou enfrentando um retorno de chamada recursivo usando esse método. Quando estou usando 'python setup.py install', ele chama Install.run para chamar pip install., essa função chama Install. execute novamente ...
Lumen
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.