Programing

setup.py이란 무엇인가?

c10106 2022. 4. 1. 20:19
반응형

setup.py이란 무엇인가?

누가 설명 좀 해줄래?setup.py구성되거나 사용될 수 있는 방법은 무엇인가?

setup.pypython 파일이며, 설치하려는 모듈/패키지가 Python Modules 배포 표준인 Distutils와 함께 패키징 및 배포되었을 가능성이 있음을 나타낸다.

이렇게 하면 파이썬 패키지를 쉽게 설치할 수 있다.종종 다음과 같이 쓰기에 충분하다.

$ pip install . 

pip사용할 것이다setup.py모듈을 설치하십시오.전화하지 마십시오.setup.py직접적

https://docs.python.org/3/installing/index.html#installing-index

파이톤 패키지를 설치하는 데 도움이 된다.foo(안에 있을 수도 있음)virtualenv패키지를 가져올 수 있도록 ()foo다른 프로젝트와 [I]Python 프롬프트에서.

그것과 비슷한 역할을 한다.pipeasy_install


사용.setup.py

몇 가지 정의부터 시작해보자.

패키지 - 다음을 포함하는 폴더/디렉토리__init__.py파일
모듈 - 다음이 포함된 유효한 python 파일.py증축의
배포 - 한 패키지가 다른 패키지모듈과 어떻게 관련되는지.

이름이 지정된 패키지를 설치하려는 경우foo그럼 당신은,

$ git clone https://github.com/user/foo  
$ cd foo
$ python setup.py install

대신, 만약 당신이 실제로 설치하고 싶지 않지만 여전히 사용하고 싶다면.그럼 그렇게 하시오.

$ python setup.py develop  

이 명령은 물건을 복사하는 대신 사이트 패키지 내에 소스 디렉토리에 대한 symlink를 만든다.이 때문에 (특히 대형 패키지의 경우) 상당히 빠르다.


작성 중setup.py

만약 당신이 당신의 패키지 트리를 가지고 있다면,

foo
├── foo
│   ├── data_struct.py
│   ├── __init__.py
│   └── internals.py
├── README
├── requirements.txt
└── 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

그렇다면 이 경우 다음과 같을 것이다.

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_descriptionpypi.org에서 패키지의 README 설명으로 사용된다.


마지막으로, 다른 사용자가 다음을 사용하여 패키지를 설치할 수 있도록 PyPi.org에 패키지를 업로드하십시오.pip install yourpackage.

이 시점에는 두 가지 옵션이 있다.

  • 절차를 숙지하기 위해 임시 test.pypi.org 서버에 게시한 다음, 일반 대중이 패키지를 사용할 수 있도록 영구 pypi.org 서버에 게시하십시오.
  • 절차에 이미 익숙하고 사용자 자격 증명(예: 사용자 이름, 암호, 패키지 이름)이 있는 경우 영구 pypi.org 서버에 즉시 게시

일단 당신의 패키지 이름이 pypi.org에 등록되면, 아무도 그것을 청구하거나 사용할 수 없다.Python 패키지는 (패키지를 PyPi에 업로드하기 위한) twine 패키지를 제안한다.그러므로

(1) 첫 번째 단계는 다음을 사용하여 현지에서 분포를 구축하는 이다.

# prereq: wheel (pip install wheel)  
$ python setup.py sdist bdist_wheel   

(2) 그런 다음twinetest.pypi.org 또는 pypi.org에 업로드할 경우:

$ twine upload --repository testpypi dist/*  
username: ***  
password: ***  

소포가 test.pypi.org에 뜨는 데는 몇 분 정도 걸릴 것이다.만족스러우면 pypi.org의 실제 및 영구 인덱스에 패키지를 업로드할 수 있는 패키지를 업로드하십시오.

$ twine upload dist/*  

선택적으로, 패키지의 파일에 다음과 같이 서명할 수도 있다.GPG기준:

$ twine upload dist/* --sign 

보너스 판독값:

setup.pyPython은 멀티 플랫폼 설치자에 대한 응답이며make파일

명령줄 설치에 익숙한 경우make && make install로 번역하다.python setup.py build && python setup.py install.

일부 패키지는 순수 파이톤이며, 바이트로만 컴파일된다.다른 것들은 네이티브 코드를 포함할 수 있으며, 이는 네이티브 컴파일러를 필요로 한다(예:gcc또는cl) 및 Python 인터페이스 모듈(예:swig또는pyrex).

루트 폴더에 "setup.py"이 있는 패키지를 다운로드한 경우 실행하여 설치할 수 있음

python setup.py install

프로젝트를 개발하고 있는데 이 파일이 어디에 유용한지 궁금하다면 설정 스크립트를 작성할 Python 문서를 확인하십시오.

setup.pyPython 스크립트는 보통 도서관이나 프로그램과 함께 제공되며, 그 언어로 쓰여진다.소프트웨어의 올바른 설치가 목적이다.

많은 패키지가 다음을 사용한다.distutils와의 관계 틀.setup.py.

http://docs.python.org/distutils/

setup.py은 두 가지 시나리오에서 사용될 수 있다. 첫째, 당신은 Python 패키지를 설치하기를 원한다.둘째, 자신만의 Python 패키지를 생성하려는 경우.보통 표준 Python 패키지는 setup.py, setup.cfg, Manifest.in과 같은 몇 개의 중요한 파일을 가지고 있다.Python 패키지를 생성할 때 이 세 개의 파일은 이름, 버전, 설명, 기타 필수 설치(일반적으로 .txt 파일에서). setup.cfg는 패키지가 생성되는 동안 setup.py에 의해 읽힌다(tar.gz). Manifest.in은 whou를 정의할 수 있는 곳이다.ld는 당신의 소포에 포함되어 있다.어쨌든 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

setup.py다른 파일들처럼 파이썬 파일이야그것은 어떤 이름이라도 가질 수 있다. 관례에 의해 이름이 지어지는 것을 제외하고.setup.py각 대본에 다른 절차가 없도록.

가는 장 쟈자.setup.pyPython 모듈을 설치하는 데 사용되지만 서버 다른 용도:

모듈:

아마도 이것은 의 가장 유명한 사용법일 것이다.setup.py모듈 안에 있다.다음을 사용하여 설치할 수 있지만pip구에는 , , 이이 Python 은 포함되어 있지 않았다.pip기본적으로 별도로 설치해야 했다.

모듈을 설치하려고 하지만 설치하지 않으려는 경우pip, 단지 유일한 대안은 다음으로부터 모듈을 설치하는 것이었다.setup.py이것은 다음을 통해 달성될 수 있다.python setup.py install 이렇게 Python은 된다).pipeasy_installext

이 방법은 종종 다음과 같은 경우에 사용된다.pip실패할 것이다.예를 들어 원하는 패키지의 올바른 Python 버전을 사용할 수 없는 경우pip소스를 다운로드하고 실행하면서 더 이상 유지되지 않기 때문일 것이다.python setup.py install컴파일된 이진 파일이 필요한 경우를 제외하고 동일한 작업을 수행한다(단, 오류가 반환되지 않는 한 Python 버전은 무시함).

의 또 다른 용도setup.py소스에서 패키지를 설치하는 것.모듈이 아직 개발 중이면 휠 파일을 사용할 수 없으며 소스에서 직접 설치하는 방법밖에 없다.

Python 확장 작성 중:

모듈이 구축되면 디스트루틸스 설정 스크립트를 사용하여 배포할 수 있는 모듈로 변환할 수 있다.일단 구축되면 위의 명령을 사용하여 설치할 수 있다.

설치 스크립트는 쉽게 작성할 수 있으며 파일이 적절하게 구성되면 실행되어 컴파일할 수 있음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 스크립트를 실행 파일로 변환한다.이를 통해 설명, 이름, 아이콘, 패키지 등 많은 명령어가 ect를 포함, 제외할 수 있으며 한 번 실행하면 배포 가능한 응용 프로그램이 생성된다.설명서의 예:

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철해 주시겠습니까?

아주 간단히 말해서 그것은 파이톤 환경에서 무언가를 구축하거나 구성하는 스크립트다.

배포될 때 패키지는 하나의 설정 스크립트만 포함해야 하지만 여러 개를 하나의 설정 스크립트로 결합하는 것은 드문 일이 아니다.이 문제가 종종 관련됨distutils하지만 항상은 아니다(마지막 예에서 보았던 것처럼).기억해야 할 것은 단지 Python 패키지/스크립트를 어떤 식으로든 구성할 뿐이다.

동일한 명령을 구축하거나 설치할 때 항상 사용할 수 있도록 이름을 사용한다.

패키지를 다운로드할 때setup.py터미널(Mac,Linux) 또는 명령 프롬프트(Windows)를 여십시오.사용.cd그리고 Tab 단추를 사용하여 파일을 다운로드한 폴더와 파일이 있는 폴더에 대한 경로를 바로 설정setup.py:

iMac:~ user $ cd path/pakagefolderwithsetupfile/

Enter 키를 누르면 다음과 같은 내용이 표시됨:

iMac:pakagefolderwithsetupfile user$

그리고 나서 이 뒤에 타이핑을 한다.python setup.py install:

iMac:pakagefolderwithsetupfile user$ python setup.py install

누르다enter됐어!

간단히 말하자면, setup.py은 as로 운영된다."__main__"설치 기능을 호출할 때 언급된 다른 답변.setup.py에는 패키지를 설치하는 데 필요한 모든 것을 넣어야 한다.

일반적인 setup.py 기능

다음 두 섹션에서는 많은 setup.py 모듈이 가지고 있는 두 가지 사항을 논의한다.

세투프풀세우다

이 함수를 통해 프로젝트 이름, 버전...과 같은 프로젝트 속성을 지정할 수 있다.가장 중요한 것은 이 기능을 통해 제대로 포장되어 있으면 다른 기능을 설치할 수 있다는 점이다.setuptools의 예는 이 웹 페이지를 참조하십시오.세우다

setuptools의 속성.설치 - 다음과 같은 유형의 패키지 설치:

  • setuptools.findpackage를 사용하여 프로젝트로 가져와 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널 위해 모든 걸 처리할 수 있을 거야불행히도 항상 그렇지는 않다.때로는 하위 프로세스 명령으로 종속성 설치와 같은 특정 작업을 수행하여 현재 설치 중인 시스템을 패키지에 적합한 상태로 만들어야 한다.이러한 기능을 사용하지 않도록 하십시오. 이러한 기능은 종종 OS와 배포 에 차이가 난다.

다운로드한 Python 패키지를 설치하려면 아카이브의 압축을 풀고 setup.py 스크립트를 실행하십시오.

python setup.py install

나는 이것이 항상 이상하게 느껴져 왔다.예를 들어 루비나 노드즈에서처럼 패키지 매니저를 다운로드로 지목하는 것이 더 자연스러울 것이다.gem install rails-4.1.1.gem

패키지 매니저도 친숙하고 믿을 수 있기 때문에 더 편해.각 한족, 十和田( each각)setup.py새롭긴 한데, 왜냐하면 소포에만 국한되어 있기 때문이지.그것은 "나는 이 setup.py이 내가 과거에 사용했던 다른 명령들과 동일한 명령을 취한다고 믿는다"라는 관습에 대한 믿음을 요구한다.그것은 정신적 의지력에 대한 유감스러운 세금이다.

나는 setup.py 워크플로우가 패키지 매니저보다 덜 안전하다고 말하는 것이 아니다(파이프는 안에서 setup.py을 운영한다는 것을 이해한다). 하지만 확실히 나는 그것이 놀랍고 거슬린다고 느낀다.같은 패키지 매니저 어플리케이션에 모든 것을 명령하는 조화가 있다.심지어 점점 좋아질지도 모른다.

참조URL: https://stackoverflow.com/questions/1471994/what-is-setup-py

반응형