Alguém encontra este aviso ao executar python setup.py installum pacote PyPI?
install_requiresdefine o que o pacote requer. Muitos pacotes PyPI têm essa opção. Como pode ser uma "opção de distribuição desconhecida"?
Alguém encontra este aviso ao executar python setup.py installum pacote PyPI?
install_requiresdefine o que o pacote requer. Muitos pacotes PyPI têm essa opção. Como pode ser uma "opção de distribuição desconhecida"?
Respostas:
python setup.pyusa distutils que não suporta install_requires. setuptools faz, também distribui (seu sucessor), e pip (que usa qualquer um) o faz. Mas você realmente precisa usá-los. easy_installOu seja, chame ferramentas de configuração por meio do comando ou pip install.
Outra forma é importar setuptools em seu setup.py, mas isso não é padrão e faz com que todos que desejam usar seu pacote tenham que ter setuptools instalado.
pip, então como executo o setup.pyarquivo se só quero construir uma extensão no local?
python setup.py sdist-lo e instalá-lo com pip install resulting_package.tar.gz. Você também pode usar pip install -epara instalar diretamente da fonte, mas sempre preferi instalar do pacote ou do repositório diretamente ..
pip install pendulum==1.4.4. A execução pip install setuptools --upgradeeliminou o erro.
Este foi o primeiro resultado da minha pesquisa no google, mas não tive resposta. Descobri que atualizar as ferramentas de configuração resolveu o problema para mim (e pip para uma boa medida)
pip install --upgrade pip
pip install --upgrade setuptools
Espero que isso ajude a próxima pessoa a encontrar este link!
pip3 install neovim-remote.)
ATENÇÃO ! ATENÇÃO ! Resposta imperfeita adiante. Para obter o "último memorando" sobre o estado da embalagem no universo Python, leia este ensaio bastante detalhado .
Acabei de encontrar esse problema ao tentar construir / instalar o ansible. O problema parece ser que o distutils realmente não suporta install_requires. Setuptools deve fazer um monkey-patch para distutils dinamicamente, mas não faz, provavelmente porque a última versão de setuptools é 0.6c11 de 2009, enquanto distutils é um projeto central do Python.
Portanto, mesmo depois de instalar manualmente o setuptools-0.6c11-py2.7.egg executando setup.py apenas seleciona distutils dist.py, e não aquele de site-packages / setuptools /.
Além disso, a documentação do setuptools sugere o uso do ez_setup e não do distutils.
No entanto, setuptools é fornecido por distribuir hoje em dia, e esse tipo de setup () suporta install_requires.
setuptoolse distributeestão em processo de fusão novamente, mas a fusão ainda não foi concluída (atualizarei este ensaio assim que que muda). " Alguém sabe como estão as coisas até 2019? Com a data de fim da vida útil do Python 2.7 se aproximando rapidamente, muitos pacotes Python estarão em processo de atualização e reembalagem.
Estou em um Mac com python 2.7.11. Tenho brincado com a criação de projetos extremamente simples e diretos, onde meu único requisito é que eu possa executar python setup.py installe setup.pyusar o comando setup, de preferência a partir do distutils. Não há literalmente nenhuma outra importação ou código além dos kwargs para setup()além do que anotei aqui.
Recebo o erro quando as importações para meu setup.pyarquivo são:
from distutils.core import setup
Quando eu uso isso, recebo avisos como
/usr/local/Cellar/python/2.7.11/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/dist.py:267: UserWarning: Opção de distribuição desconhecida: 'entry_points' warnings.warn ( msg)
Se eu alterar as importações (e nada mais ) para o seguinte:
from distutils.core import setup
import setuptools # noqa
Os avisos vão embora.
Observe que não estou usando setuptools, apenas importá- lo muda o comportamento para que ele não emita mais os avisos. Para mim, essa é a causa de uma diferença verdadeiramente desconcertante, onde alguns projetos que estou usando dão esses avisos e outros não.
Claramente, alguma forma de patching do macaco está acontecendo e é afetada pelo fato de essa importação ser ou não feita. Provavelmente, essa não é a situação para todos que estão pesquisando esse problema, mas para o ambiente restrito em que estou trabalhando, essa é a resposta que eu estava procurando.
Isso é consistente com o outro comentário (da comunidade), que diz que os distutils devem fazer o monkeypatch nas ferramentas de instalação e que eles tiveram o problema ao instalar o Ansible. Ansible parece ter tentado permitir instalações sem ter ferramentas de configuração no passado e voltou a fazer isso.
https://github.com/ansible/ansible/blob/devel/setup.py
Muita coisa está no ar ... mas se você está procurando uma resposta simples para um projeto simples, provavelmente deve apenas importar ferramentas de configuração.
import setuptoolstambém resolveu milagrosamente o problema para mim no ubuntu 16.04 com python 3.5.
Este é um aviso do distutils e é um sinal de que você não tem ferramentas de instalação instaladas. Instalá-lo em http://pypi.python.org/pypi/setuptools removerá o aviso.
sudo apt-get install python-dev # for python2.x installs
sudo apt-get install python3-dev # for python3.x installs
Ele instalará todos os cabeçalhos ausentes. Resolveu meu problema
Em conclusão :
distutilsnão suporta install_requiresou entry_points, setuptoolssuporta.
mude from distutils.core import setupem setup.py para from setuptools import setupou refatore seu setup.py para usar apenas distutilsrecursos.
Vim aqui porque não tinha percebido que entry_pointsera apenas uma setuptoolscaracterística.
Se você está aqui querendo se converter setuptoolsem algo distutilscomo eu:
install_requiresde setup.py e use apenas requirements.txt compipentry_pointspara scripts( doc ) e refatore quaisquer módulos contando entry_pointscom scripts completos com shebangs e um ponto de entrada.Pelo que eu posso dizer, este é um bug no setuptools onde não está removendo as opções específicas do setuptools antes de chamar a classe base na biblioteca padrão: https://bitbucket.org/pypa/setuptools/issue/29 / Avoid-userwarnings-emitted-when-Call
Se você tiver um incondicional import setuptoolsem seu setup.py(como deveria se estiver usando as opções específicas do setuptools), então o fato de o script não estar falhando ImportErrorindica que o setuptools está instalado corretamente.
Você pode silenciar o aviso da seguinte maneira:
python -W ignore::UserWarning:distutils.dist setup.py <any-other-args>
Só faça isso se você usar a importação incondicional que irá falhar completamente se setuptools não está instalado :)
(Estou vendo o mesmo comportamento em uma verificação do repositório de setuptools pós-fusão, e é por isso que estou confiante de que é um bug de setuptools em vez de um problema de configuração do sistema. Espero que a distribuição de pré-fusão tenha o mesmo problema)
Agora vi isso em ferramentas legadas usando Python2.7, onde uma compilação (como um Dockerfile) instala uma dependência não fixada, por exemplo, pytest. O PyTest eliminou o suporte ao Python 2.7, portanto, pode ser necessário especificar a versão <a nova versão do pacote.
Ou morder a bala e converter esse aplicativo para Python 3 se isso for viável.