누구든지 setup.py
가 무엇이며 어떻게 구성하거나 사용할 수 있는지 설명해 주시겠습니까?
질문자 :Software Enthusiastic
setup.py
는 파이썬 파일로, 설치하려는 모듈/패키지가 Python 모듈 배포 표준인 Distutils로 패키징 및 배포되었을 가능성이 있음을 나타냅니다.
이를 통해 Python 패키지를 쉽게 설치할 수 있습니다. 종종 다음과 같이 작성하는 것으로 충분합니다.
$ pip install .
pip
는 setup.py
를 사용하여 모듈을 설치합니다. setup.py
직접 호출하지 마십시오.
https://docs.python.org/3/installing/index.html#installing-index
Silfverstrom
다른 프로젝트와 [I]Python 프롬프트에서 foo
를 가져올 수 있도록 foo
를 설치하는 데 도움이 됩니다 virtualenv
에도 있을 수 있음).
pip
, easy_install
등의 유사한 작업을 수행합니다.
setup.py
사용
몇 가지 정의부터 시작하겠습니다.
패키지 __init__.py
파일이 포함된 폴더/디렉토리입니다.
모듈 - 확장자 .py
유효한 파이썬 파일입니다.
배포 - 한 패키지 가 다른 패키지 및 모듈 과 관련되는 방식입니다.
foo
라는 패키지를 설치하고 싶다고 가정해 봅시다. 그럼 당신은,
$ git clone https://github.com/user/foo $ cd foo $ python setup.py install
대신 실제로 설치하고 싶지 않지만 여전히 사용하고 싶은 경우. 그럼 해,
$ python setup.py develop
이 명령은 항목을 복사하는 대신 사이트 패키지 내의 소스 디렉토리에 대한 심볼릭 링크를 생성합니다. 이 때문에 상당히 빠릅니다(특히 큰 패키지의 경우).
setup.py
생성
다음과 같은 패키지 트리가 있는 경우
foo ├── foo │ ├── data_struct.py │ ├── __init__.py │ └── internals.py ├── README ├── requirements.txt └── setup.py
그런 다음 일부 시스템에 설치할 수 있도록 setup.py
스크립트에서 다음을 수행합니다.
from setuptools import setup setup( name='foo', version='1.0', description='A useful module', author='Man Foo', author_email='foomail@foo.com', packages=['foo'], #same as name install_requires=['wheel', 'bar', 'greek'], #external packages as dependencies )
대신 패키지 트리가 아래와 같이 더 복잡한 경우:
foo ├── foo │ ├── data_struct.py │ ├── __init__.py │ └── internals.py ├── README ├── requirements.txt ├── scripts │ ├── cool │ └── skype └── setup.py
그런 다음 setup.py
는 다음과 같습니다.
from setuptools import setup setup( name='foo', version='1.0', description='A useful module', author='Man Foo', author_email='foomail@foo.com', packages=['foo'], #same as name install_requires=['wheel', 'bar', 'greek'], #external packages as dependencies scripts=[ 'scripts/cool', 'scripts/skype', ] )
setup.py
)에 더 많은 것을 추가 하고 적절하게 만드십시오:
from setuptools import setup with open("README", 'r') as f: long_description = f.read() setup( name='foo', version='1.0', description='A useful module', license="MIT", long_description=long_description, author='Man Foo', author_email='foomail@foo.com', url="http://www.foopackage.com/", packages=['foo'], #same as name install_requires=['wheel', 'bar', 'greek'], #external packages as dependencies scripts=[ 'scripts/cool', 'scripts/skype', ] )
long_description
사용된다 pypi.org 패키지의 README 설명한다.
pip install yourpackage
사용하여 패키지를 설치할 수 있도록 PyPi.org에 패키지를 업로드할 준비가 되었습니다.
이 시점에서 두 가지 옵션이 있습니다.
- 임시 test.pypi.org 서버에 게시하여 절차에 익숙해지도록 한 다음 대중이 패키지를 사용할 수 있도록 영구 pypi.org 서버에 게시합니다.
- 이미 절차에 익숙하고 사용자 자격 증명(예: 사용자 이름, 암호, 패키지 이름)이 있는 경우 영구 pypi.org 서버에 즉시 게시
패키지 이름이 pypi.org에 등록되면 아무도 이를 요구하거나 사용할 수 없습니다. Python 패키징은 업로드 목적으로 꼬기 패키지 를 제안합니다(패키지를 PyPi로). 따라서,
(1) 첫 번째 단계는 다음을 사용하여 배포판을 로컬로 구축 하는 것입니다.
# prereq: wheel (pip install wheel) $ python setup.py sdist bdist_wheel
(2) 그런 다음 test.pypi.org 또는 pypi.org에 업로드하기 위해 twine
$ twine upload --repository testpypi dist/* username: *** password: ***
패키지가 test.pypi.org에 나타나는 데 몇 분 정도 걸립니다. 만족스러우면 다음을 사용하여 패키지를 pypi.org 의 실제 영구 인덱스에 업로드할 수 있습니다.
$ twine upload dist/*
GPG
를 사용하여 패키지의 파일에 서명할 수도 있습니다.
$ twine upload dist/* --sign
보너스 읽기 :
여기에서 실제 프로젝트의 샘플
setup.py
torchvision-setup.py
kmario23
setup.py
는 다중 플랫폼 설치 프로그램 및 make
파일에 대한 Python의 답변입니다.
명령줄 설치에 익숙하다면 make && make install
python setup.py build && python setup.py install
변환됩니다.
일부 패키지는 순수 Python이며 바이트 컴파일만 가능합니다. gcc
또는 cl
)와 Python 인터페이스 모듈(예: swig
또는 pyrex
)이 필요한 네이티브 코드를 포함할 수 있습니다.
whatnick
루트 폴더에 "setup.py"가 있는 패키지를 다운로드한 경우 다음을 실행하여 설치할 수 있습니다.
python setup.py install
프로젝트를 개발 중이고 이 파일이 무엇에 유용한지 궁금하다면 설정 스크립트 작성에 대한 Python 문서를 확인하십시오.
Pēteris Caune
setup.py
는 일반적으로 해당 언어로 작성된 라이브러리 또는 프로그램과 함께 제공되는 Python 스크립트입니다. 목적은 소프트웨어의 올바른 설치입니다.
많은 패키지 setup.py
distutils
프레임워크를 사용합니다.
Ferdinand Beyer
setup.py는 두 가지 시나리오에서 사용할 수 있습니다. 먼저 Python 패키지를 설치하려고 합니다. 둘째, 자신만의 Python 패키지를 만들고 싶습니다. 일반적으로 표준 Python 패키지에는 setup.py, setup.cfg 및 Manifest.in과 같은 몇 가지 중요한 파일이 있습니다. Python 패키지를 생성할 때 이 세 파일은 (egg-info 폴더 아래 PKG-INFO의 내용) 이름, 버전, 설명, 기타 필수 설치(일반적으로 .txt 파일) 및 기타 몇 가지 매개변수를 결정합니다. setup.cfg는 패키지가 생성되는 동안 setup.py에서 읽습니다(tar.gz일 수 있음). Manifest.in은 패키지에 무엇이 포함되어야 하는지 정의할 수 있는 곳입니다. 어쨌든 setup.py를 사용하여 많은 일을 할 수 있습니다.
python setup.py build python setup.py install python setup.py sdist <distname> upload [-r urltorepo] (to upload package to pypi or local repo)
setup.py 와 함께 사용할 수 있는 다른 명령이 많이 있습니다. 도와주기 위해
python setup.py --help-commands
Avichal Badaya
setup.py
는 다른 것과 같은 Python 파일입니다. 각 스크립트마다 다른 절차가 없도록 하기 위해 setup.py
라는 이름을 사용한다는 점을 제외하고 모든 이름을 사용할 수 있습니다.
가장 자주 setup.py
는 Python 모듈을 설치하는 데 사용되지만 서버는 다른 용도로 사용됩니다.
모듈:
setup.py
가장 유명한 사용법이 모듈에 있다는 것입니다. pip
사용하여 설치할 수 있지만 이전 Python 버전에는 pip
가 포함되어 있지 않아 별도로 설치해야 했습니다.
모듈을 설치하고 싶지만 pip
setup.py
파일에서 모듈을 설치하는 것입니다. python setup.py install
통해 달성할 수 있습니다. 이렇게 하면 Python 모듈을 루트 사전에 설치합니다( pip
, easy_install
요법 제외).
pip
가 실패할 때 자주 사용됩니다. 예를 들어 원하는 패키지의 올바른 Python 버전이 더 이상 유지 관리되지 않기 때문에 pip
python setup.py install
을 실행하면 컴파일된 바이너리가 필요한 경우를 제외하고 동일한 작업이 수행됩니다. , (그러나 오류가 반환되지 않는 한 Python 버전은 무시합니다).
setup.py
또 다른 용도는 소스에서 패키지를 설치하는 것입니다. 모듈이 아직 개발 중인 경우 휠 파일을 사용할 수 없으며 설치하는 유일한 방법은 소스에서 직접 설치하는 것입니다.
Python 확장 빌드:
모듈이 빌드되면 distutils 설정 스크립트를 사용하여 배포할 준비가 된 모듈로 변환할 수 있습니다. 일단 빌드되면 위의 명령을 사용하여 설치할 수 있습니다.
설정 스크립트는 빌드하기 쉽고 일단 파일이 제대로 구성되면 python setup.py build
를 실행하여 컴파일할 수 있습니다(모든 명령은 링크 참조).
setup.py
라는 이름이 지정되지만 어떤 이름도 사용할 수 있습니다.
사이썬:
setup.py
파일의 또 다른 유명한 용도에는 컴파일된 확장이 포함됩니다. 여기에는 사용자 정의 값이 있는 설정 스크립트가 필요합니다. 빠른(그러나 일단 컴파일되면 플랫폼에 따라 다름) 실행이 가능합니다. 다음은 설명서 의 간단한 예입니다.
from distutils.core import setup from Cython.Build import cythonize setup( name = 'Hello world app', ext_modules = cythonize("hello.pyx"), )
python setup.py build
를 통해 컴파일할 수 있습니다.
Cx_Freeze:
설정 스크립트가 필요한 또 다른 모듈은 cx_Freeze
입니다. 이것은 Python 스크립트를 실행 파일로 변환합니다. 이것은 설명, 이름, 아이콘, 패키지와 같은 많은 명령을 포함하고 제외할 수 있게 하며 일단 실행되면 배포 가능한 응용 프로그램이 생성됩니다. 문서 의 예:
import sys from cx_Freeze import setup, Executable build_exe_options = {"packages": ["os"], "excludes": ["tkinter"]} base = None if sys.platform == "win32": base = "Win32GUI" setup( name = "guifoo", version = "0.1", description = "My GUI application!", options = {"build_exe": build_exe_options}, executables = [Executable("guifoo.py", base=base)])
python setup.py build
를 통해 컴파일할 수 있습니다.
setup.py
파일은 무엇입니까?
간단히 말해서 Python 환경에서 무언가를 빌드하거나 구성하는 스크립트입니다.
배포될 때 패키지에는 하나의 설정 스크립트만 포함되어야 하지만 여러 개를 하나의 설정 스크립트로 결합하는 것은 드문 일이 아닙니다. 이것은 종종 distutils
포함하지만 항상 그런 것은 아닙니다(지난 예에서 보여드린 것처럼). 기억해야 할 것은 Python 패키지/스크립트를 어떤 식으로든 구성한다는 것입니다.
빌드하거나 설치할 때 항상 동일한 명령을 사용할 수 있도록 이름을 사용합니다.
Simon
setup.py
가 포함된 패키지를 다운로드할 때 터미널(Mac, Linux) 또는 명령 프롬프트(Windows)를 엽니다. cd
사용하고 탭 버튼을 사용하여 파일을 다운로드한 폴더와 setup.py
가 있는 폴더의 경로를 바로 설정합니다.
iMac:~ user $ cd path/pakagefolderwithsetupfile/
Enter 키를 누르면 다음과 같이 표시됩니다.
iMac:pakagefolderwithsetupfile user$
python setup.py install
다음에 입력하십시오.
iMac:pakagefolderwithsetupfile user$ python setup.py install
enter
누릅니다. 완료!
G M
간단하게 하기 위해 setup.py는 언급된 다른 답변 에서 설치 기능 을 호출할 때 "__main__"
setup.py 안에 패키지를 설치하는 데 필요한 모든 것을 넣어야 합니다.
일반적인 setup.py 함수
다음 두 섹션에서는 많은 setup.py 모듈이 가지고 있는 두 가지 사항에 대해 설명합니다.
setuptools.setup
이 기능을 사용하면 프로젝트 이름, 버전과 같은 프로젝트 속성 을 지정할 수 있습니다.... 가장 중요한 것은 이 기능을 사용하면 다른 기능이 제대로 패키징된 경우 설치할 수 있다는 것입니다. setuptools.setup의 예는 이 웹페이지 를 참조하십시오.
setuptools.setup의 이러한 속성을 사용하면 다음 유형의 패키지를 설치할 수 있습니다.
setuptools.findpackages를 사용하여 프로젝트로 가져오고 PyPI에 나열되는 패키지:
packages=find_packages(exclude=["docs","tests", ".gitignore", "README.rst","DESCRIPTION.rst"])
패키지는 PyPI 에 없지만 dependency_links를 사용하여 URL에서 다운로드할 수 있습니다.
dependency_links=["http://peak.telecommunity.com/snapshots/",]
사용자 정의 기능
이상적인 세계에서는 setuptools.setup
이 모든 것을 처리합니다. 불행히도 항상 그런 것은 아닙니다. 때로는 subprocess 명령으로 종속성을 설치하는 것과 같은 특정 작업을 수행하여 패키지에 올바른 상태로 설치 중인 시스템을 가져와야 합니다. 이것을 피하십시오. 이러한 기능은 혼동을 일으키고 OS 와 배포판 간에 종종 다릅니다.
mikeLundquist
다운로드한 Python 패키지를 설치하려면 아카이브를 추출하고 내부에서 setup.py 스크립트를 실행합니다.
python setup.py install
나에게 이것은 항상 이상하게 느껴졌다. Ruby 및 Nodejs에서와 같이 다운로드 시 패키지 관리자를 지정하는 것이 더 자연스럽습니다. gem install rails-4.1.1.gem
패키지 관리자는 친숙하고 신뢰할 수 있기 때문에 더욱 편안합니다. 반면에 각 setup.py
는 패키지에 따라 다르기 때문에 참신합니다. "나는 이 setup.py가 내가 과거에 사용한 다른 명령과 동일한 명령을 사용한다고 믿습니다"라는 규칙에 대한 믿음이 필요합니다. 정신적 의지력에 대한 유감스러운 세금입니다.
setup.py 워크플로가 패키지 관리자보다 덜 안전하다는 말은 아니지만(Pip은 내부적으로 setup.py를 실행한다는 것을 이해합니다) 확실히 어색하고 거슬리는 느낌이 듭니다. 동일한 패키지 관리자 응용 프로그램에 대한 모든 명령이 조화를 이룹니다. 좋아하게 될 수도 있습니다.
Colonel Panic
출처 : http:www.stackoverflow.com/questions/1471994/what-is-setup-py
'etc. > StackOverFlow' 카테고리의 다른 글
CSS 클래스 이름/선택기에서 유효한 문자는 무엇입니까? (0) | 2023.04.20 |
---|---|
performSelector는 선택자를 알 수 없기 때문에 누수를 일으킬 수 있습니다. (0) | 2023.04.20 |
git reset --hard HEAD~1을 어떻게 취소할 수 있습니까? (0) | 2023.04.15 |
Access-Control-Allow-Origin 헤더는 어떻게 작동합니까? (2) | 2023.04.15 |
Javascript의 배열에서 빈 요소 제거 (0) | 2023.04.15 |