pypi 사용자 경고:알 수 없는 배포 옵션: 'install_requires'
실행할 때 이 경고가 발생한 사람이 있습니까?python setup.py install
PyPI 패키지의?
install_requires
패키지에 필요한 항목을 정의합니다.많은 PyPI 패키지에 이 옵션이 있습니다.어떻게 그것이 "알 수 없는 유통 옵션"일 수 있습니까?
python setup.py
에서는 install_install_install_install을 distutils를 사용합니다. (그후계자를) 배포하고(둘 중 dosetuptools도 배포합니다.하지만 실제로 그것들을 사용해야 합니다.즉, 다음을 통해 셋업 툴을 호출합니다.easy_install
또는 명령또pip install
.
또 다른 방법은 setup.py 의 설치 도구에서 설정을 가져오는 것이지만, 이는 표준이 아니며 패키지를 사용하려는 모든 사용자에게 설치 도구가 있어야 합니다.
이것은 제 구글 검색에서 첫 번째 결과였지만 답이 없었습니다.설치 도구를 업그레이드하면 문제가 해결됨을 알게 되었습니다(그리고 적절한 조치를 위해 pip).
pip install --upgrade pip
pip install --upgrade setuptools
다음 사용자가 이 링크를 찾는 데 도움이 되기를 바랍니다!
나는 python 2.7.11이 있는 Mac에 있습니다.저는 매우 단순하고 간단한 프로젝트를 만들어 왔습니다. 단 하나의 요구 사항은 실행할 수 있어야 한다는 것입니다.python setup.py install
그리고 가지고 있습니다.setup.py
distutils 설정에서 setup 명령을 사용하는 입니다.말 그대로 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 : 사용자 경고:알 수 없는 배포 옵션: 'entry_points' warns.warn(msg)
가져오기(다른 항목 없음)를 다음으로 변경하는 경우:
from distutils.core import setup
import setuptools # noqa
경고가 사라집니다.
사용하지 않음에 유의하십시오.setuptools
가져오기만 하면 동작이 변경되어 더 이상 경고가 발생하지 않습니다.이것이 제가 사용하고 있는 프로젝트와 그렇지 않은 프로젝트 간에 정말 이해하기 어려운 차이의 원인입니다.
분명히, 어떤 형태로든 원숭이 패치가 진행되고 있으며, 그것은 수입이 이루어졌는지에 따라 영향을 받습니다.이것은 아마도 이 문제를 연구하는 모든 사람들에게 해당되는 상황은 아닐 것입니다. 하지만 제가 일하고 있는 좁은 환경에서 제가 찾고 있던 답은 이것입니다.
이는 distutils가 monkeypatch setup tool을 설치해야 하며 Ansible을 설치할 때 문제가 있었다는 다른 (커뮤니티) 의견과 일치합니다.Ansible은 과거에 설치 도구를 사용하지 않고 설치를 허용하려고 시도한 것으로 보입니다.
https://github.com/ansible/ansible/blob/devel/setup.py
많은 것들이 공중에 떠 있습니다...그러나 간단한 프로젝트에 대한 간단한 답을 찾고 있다면 설정 도구를 가져오는 것이 좋습니다.
주의! 주의!불완전한 답이 앞에 있습니다.Python 세계의 포장 상태에 대한 "최신 메모"를 얻으려면 이 꽤 상세한 에세이를 읽으십시오.
책임을 빌드/설치할 때 이 문제가 발생했습니다.문제는 distutils가 install_requires를 지원하지 않는다는 것입니다.셋업 툴은 즉시 distutils를 monkey-patch해야 하지만 그렇지 않습니다. 아마도 distutils의 마지막 릴리스가 2009년부터 0.6c11인 반면 distutils는 핵심 Python 프로젝트이기 때문일 것입니다.
따라서 setup.py 을 실행하는 setuptools-0.6c11-py2.7.dll을 수동으로 설치한 후에도 site-dispatches/setuptools/에서 distutils dist.py 만 선택합니다.
또한 setuptools 설명서는 distutils가 아닌 ez_setup을 사용하는 것을 암시합니다.
그러나 현재 setuptools 자체는 배포를 통해 제공되고 있으며, 해당 setup() 버전은 install_required를 지원합니다.
결론적으로:
distutils
하지 install_requires
또는entry_points
,setuptools
그렇습니다.
from distutils.core import setup
setup.py 에서 ~에게from setuptools import setup
또는 setup.py 을 리팩터링하여 사용할 수도 있습니다.distutils
특징들.
깨닫지 못해서 .entry_points
지에 불과했습니다.setuptools
특징.
변환을 원하는 경우setuptools
distutils
나처럼:
- 거한제를 합니다.
install_requires
setup.py 에서 요구사항만 사용할 수 있습니다.과의 txt.pip
entry_points
scripts
(doc)에 의존하는 모듈을 리팩터링합니다.entry_points
셰뱅과 진입점이 있는 완전한 스크립트가 되는 것.
이는 대리점의 경고이며, 설치 도구가 설치되어 있지 않음을 나타냅니다.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
누락된 헤더가 있으면 설치합니다.그것은 나의 문제를 해결했습니다.
제가 알기로는 이것은 표준 라이브러리의 기본 클래스를 호출하기 전에 설치 도구 관련 옵션을 제거하지 않는 설치 도구의 버그입니다. https://bitbucket.org/pypa/setuptools/issue/29/avoid-userwarnings-emitted-when-calling
만약 당신이 무조건적으로import setuptools
당신의setup.py
(setuptools 특정 옵션을 사용하는 경우 필요한 것처럼) 스크립트가 실패하지 않는 이유는ImportError
설치 도구가 제대로 설치되었음을 나타냅니다.
다음과 같이 경고를 음소거할 수 있습니다.
python -W ignore::UserWarning:distutils.dist setup.py <any-other-args>
설치 도구를 설치하지 않으면 완전히 실패하는 무조건 가져오기를 사용하는 경우에만 이 작업을 수행합니다. :)
(합병 후 setuptools repo의 체크아웃에서도 이와 동일한 동작을 볼 수 있으므로 시스템 구성 문제가 아니라 setuptools 버그라고 확신합니다.병합 전 배포도 동일한 문제가 있을 것으로 예상됩니다.)
이제 Python 2.7을 사용하는 레거시 도구에서 이를 보았습니다. 빌드(Docker 파일과 같은)는 Pytest와 같은 고정되지 않은 종속성을 설치합니다.PyTest는 Python 2.7 지원을 중단했으므로 버전 < 새 패키지 릴리스를 지정해야 할 수 있습니다.
또는 실행 가능한 경우 해당 앱을 Python 3으로 변환합니다.
공식 문서를 따르면 정상적으로 작동합니다.
import setuptools
setuptools.setup(...)
출처: https://packaging.python.org/tutorials/packaging-projects/ #creating-delay-py
언급URL : https://stackoverflow.com/questions/8295644/pypi-userwarning-unknown-distribution-option-install-requires
'source' 카테고리의 다른 글
IIS - localhost가 아닌 IP 주소로 페이지에 액세스할 수 없습니다. (0) | 2023.08.04 |
---|---|
$document.ready()에 해당하는 Angular2 (0) | 2023.08.04 |
Python을 사용하여 Redis 데이터베이스의 모든 키 가져오기 (0) | 2023.08.04 |
MVC와 같은 WebForms에서 데이터를 루프하는 방법 (0) | 2023.08.04 |
.dex 파일의 메서드 참조 수는 64k API 17을 초과할 수 없습니다. (0) | 2023.08.04 |