[python] pypi UserWarning : 알 수없는 배포 옵션 : ‘install_requires’

python setup.py installPyPI 패키지를 실행할 때 누구 든지이 경고가 발생합니까 ?

install_requires패키지에 필요한 것을 정의합니다. 많은 PyPI 패키지에이 옵션이 있습니다. 어떻게 “알 수없는 배포 옵션”이 될 수 있습니까?



답변

python setup.pyinstall_requires를 지원하지 않는 distutils를 사용합니다. setuptools는 배포 (후속 자) 및 pip (둘 중 하나 사용)도 수행합니다. 하지만 실제로 사용해야합니다. 즉, easy_install명령 또는 pip install.

또 다른 방법은 setup.py의 setuptools에서 설정을 가져 오는 것입니다. 그러나 이것은 표준이 아니며 패키지를 사용하려는 모든 사람이 setuptools를 설치해야합니다.


답변

이것은 내 Google 검색의 첫 번째 결과 였지만 대답이 없었습니다. setuptools를 업그레이드하면 문제가 해결되었음을 알았습니다 (그리고 좋은 측정을 위해 pip).

pip install --upgrade pip
pip install --upgrade setuptools

이것이 다음 사람이이 링크를 찾는 데 도움이되기를 바랍니다.


답변

주의 ! 주의 ! 앞의 불완전한 대답. 파이썬 세계의 패키징 상태에 대한 “최신 메모”를 얻으려면 이 매우 상세한 에세이를 읽으십시오 .

ansible을 빌드 / 설치하려고 할 때이 문제가 발생했습니다. 문제는 distutils가 실제로 install_requires를 지원하지 않는 것 같습니다 . Setuptools 즉시 distutils를 원숭이 패치 해야 하지만 그렇지 않은 이유는 아마도 마지막 setuptools 릴리스가 2009 년의 0.6c11 인 반면 distutils는 핵심 Python 프로젝트이기 때문입니다.

따라서 setuptools-0.6c11-py2.7.egg를 수동으로 설치 한 후에도 setup.py를 실행하면 distutils dist.py 만 선택하고 site-packages / setuptools /의 파일은 선택하지 않습니다.

또한 setuptools 문서는 distutils가 아닌 ez_setup 사용에 대한 힌트를 제공 합니다.

그러나 setuptools 자체는 현재 배포판에서 제공되며 setup ()의 풍미는 install_requires를 지원합니다.


답변

저는 Python 2.7.11이 설치된 Mac을 사용하고 있습니다. 저는 매우 간단하고 간단한 프로젝트를 만드는 데 노력해 왔습니다. 여기서 유일한 요구 사항 은를 실행할 수 있고 이상적으로는 distutils에서 setup 명령 python setup.py installsetup.py사용할 수 있다는 것 입니다. kwargs 외에 setup()내가 여기서 언급 한 것 외에 다른 수입품이나 코드는 말 그대로 없습니다 .

setup.py파일에 대한 가져 오기가 다음과 같을 때 오류가 발생합니다 .

from distutils.core import setup

이것을 사용하면 다음과 같은 경고가 표시됩니다.

/usr/local/Cellar/python/2.7.11/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/dist.py:267 : UserWarning : 알 수없는 배포 옵션 : ‘entry_points’warnings.warn ( 메시지)

가져 오기 ( 다른 것은 없음 )를 다음으로 변경하면 :

from distutils.core import setup
import setuptools  # noqa

경고가 사라집니다.

내가 사용하지 않는 오전 참고 setuptools그냥 가져 가 더 이상 경고를 방출하도록 동작을 변경하지 않습니다. 나에게 이것은 내가 사용하는 일부 프로젝트가 그러한 경고를 제공하고 다른 일부는 그렇지 않은 진정한 당황스러운 차이의 원인입니다.

분명히 어떤 형태의 원숭이 패치가 진행되고 있으며 가져 오기가 수행되었는지 여부에 따라 영향을받습니다. 이것은 아마도이 문제를 연구하는 모든 사람들에게 해당되는 상황은 아니지만 제가 일하고있는 좁은 환경에서 제가 찾던 답입니다.


이것은 distutils가 setuptools를 몽키 패치해야하며 Ansible을 설치할 때 문제가 있다고 말하는 다른 (커뮤니티) 의견과 일치합니다. Ansible은 과거에 setuptools없이 설치를 허용하려고 시도한 것 같습니다.

https://github.com/ansible/ansible/blob/devel/setup.py

많은 것들이 공중에 있습니다 …하지만 간단한 프로젝트에 대한 간단한 답을 찾고 있다면 setuptools 만 가져와야합니다.


답변

이것은 distutils의 경고이며 setuptools가 설치되어 있지 않다는 신호입니다. http://pypi.python.org/pypi/setuptools 에서 설치 하면 경고가 제거됩니다.


답변

sudo apt-get install python-dev  # for python2.x installs
sudo apt-get install python3-dev  # for python3.x installs

누락 된 헤더를 설치합니다. 내 문제가 해결되었습니다.


답변

결론적으로 :

distutils지원하지 않습니다 install_requires또는 entry_points, setuptools않습니다.

변화 from distutils.core import setupsetup.pyfrom setuptools import setup귀하 또는 리팩토링 setup.py는 만 사용 distutils하고 있습니다.

나는 entry_points단지 setuptools기능 이라는 것을 깨닫지 못했기 때문에 여기에 왔습니다 .

나처럼 전환 setuptools하고 distutils싶다면 :

  1. 제거 install_requires에서 setup.py 그냥 사용 requirements.txt을 함께pip
  2. ( doc )로 변경 entry_points하고 shebangs 및 진입 점이있는 전체 스크립트 에 의존하는 모듈을 리팩터링합니다 .scriptsentry_points