Alguém encontra este aviso ao executar python setup.py install
um pacote PyPI?
install_requires
define 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 install
um pacote PyPI?
install_requires
define 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.py
usa 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_install
Ou 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.py
arquivo 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 -e
para 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 --upgrade
eliminou 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.
setuptools
e distribute
estã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 install
e setup.py
usar 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.py
arquivo 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 setuptools
també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 :
distutils
não suporta install_requires
ou entry_points
, setuptools
suporta.
mude from distutils.core import setup
em setup.py para from setuptools import setup
ou refatore seu setup.py para usar apenas distutils
recursos.
Vim aqui porque não tinha percebido que entry_points
era apenas uma setuptools
característica.
Se você está aqui querendo se converter setuptools
em algo distutils
como eu:
install_requires
de setup.py e use apenas requirements.txt compip
entry_points
para scripts
( doc ) e refatore quaisquer módulos contando entry_points
com 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 setuptools
em 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 ImportError
indica 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.