Existe alguma diferença significativa entre
pip install -e /path/to/mypackage
e a variante setuptools?
python /path/to/mypackage/setup.py develop
Existe alguma diferença significativa entre
pip install -e /path/to/mypackage
e a variante setuptools?
python /path/to/mypackage/setup.py develop
Respostas:
Tente evitar ligar setup.py
diretamente, pois isso não informa adequadamente ao pip que você instalou seu pacote.
Com pip install -e
:
Para projetos locais, o diretório "SomeProject.egg-info" é criado em relação ao caminho do projeto. Essa é uma vantagem do uso
setup.py develop
, que cria as informações sobre o ovo diretamente em relação ao diretório de trabalho atual.
Mais: docs
Leia também os documentos das ferramentas de instalação .
Mais uma diferença: pip install -e
usa roda enquanto
python setup.py develop
não a usa.
Com install
, você pode obter o mesmo comportamento usando
pip install -e /path/to/package --no-use-wheel
Mais informações sobre rodas: rodas python
--no-use-wheel
DEPRECATED em favor de--no-binary :all:
Outra diferença que pode favorecer pip install -e
é que, se seu projeto tem dependências em install_requires
em setup.py
, em seguida, pip install -e .
instala as dependências com pip, enquanto python setup.py develop
pode instalar com easy_install
, e pode causar problemas re: 'ovo-info' como mencionado acima. Quando install-requires
usado dependency_links
com URLs git personalizados, com identificadores de ovo anexados, isso pode ser especialmente irritante.
pip install -e .
, ele basicamente cria um link simbólico no diretório de pacotes de sites Python relevante para apontar para sua cópia de trabalho. Como as alterações de código são feitas nessa cópia de trabalho, ela é refletida instantaneamente na versão "instalada", portanto, você não precisa executar novamente os comandos de instalação à medida que avança. Isto é principalmente útil para o desenvolvimento em um repositório que representa um pacote instalável, mas também pode ser útil para, por exemplo, escrever algum conjunto de módulos com apenas importações absolutos, etc.
Outra diferença: quando você executa python setup.py develop
uma versão que é considerada um pré-lançamento (talvez porque você esteja executando a partir de um clone do git quando não fez check-out de um release), habilitará a instalação de pré-lançamentos de suas dependências . Por outro lado, pip install --editable
você teria que passar --pre
explicitamente se quiser esses pré-lançamentos.
(Consulte o log do IC com pré-lançamentos usados acidentalmente e compare-o com uma compilação fixa aqui .)