문제

누구든지 설명해 주시겠습니까? setup.py 그리고 어떻게 구성되거나 사용될 수 있습니까?

도움이 되었습니까?

해결책

setup.py Python 파일은 일반적으로 설치하려는 모듈/패키지가 Python 모듈을 배포하는 표준 인 Distutils와 함께 포장되어 배포되었음을 알려줍니다.

이를 통해 Python 패키지를 쉽게 설치할 수 있습니다. 종종 글로 작성하기에 충분합니다.

$ pip install . 

pip setup.py를 사용하여 모듈을 설치합니다. 전화를 피하십시오 setup.py 곧장.

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

다른 팁

파이썬 패키지를 설치하는 데 도움이됩니다 foo 당신의 기계에서 (또한있을 수도 있습니다 virtualenv) 패키지를 가져올 수 있도록 foo 다른 프로젝트와 [i] 파이썬 프롬프트에서.

비슷한 일을합니다 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  

이 명령은 사물을 복사하는 대신 사이트 패키지 내에서 소스 디렉토리에 Symlinks를 생성합니다. 이 때문에 매우 빠릅니다 (특히 큰 패키지의 경우).


창조 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=['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=['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=['bar', 'greek'], #external packages as dependencies
   scripts=[
            'scripts/cool',
            'scripts/skype',
           ]
)

그만큼 long_description 사용됩니다 pypi.org 패키지의 readme 설명으로.


그리고 마지막으로, 이제 패키지를 pypi.org 다른 사람들이 패키지를 사용하여 설치할 수 있도록합니다 pip install yourpackage.

첫 번째 단계는 다음을 사용하여 PYPI의 패키지 이름 및 공간을 청구하는 것입니다.

$ python setup.py register

패키지 이름이 등록되면 아무도 주장하거나 사용할 수 없습니다. 성공적인 등록 후에는 패키지를 (클라우드에) 업로드해야합니다.

$ python setup.py upload

선택적으로 패키지에 서명 할 수도 있습니다 GPG 에 의해,

$ python setup.py --sign upload

보너스: 샘플을 참조하십시오 setup.py 여기의 실제 프로젝트에서 : torchvision-setup.py

setup.py 다중 플랫폼 설치 프로그램에 대한 Python의 답변입니다 make 파일.

그렇다면 명령 줄 설치에 익숙하다면 make && make install 번역합니다 python setup.py build && python setup.py install.

일부 패키지는 순수한 파이썬이며 바이트 만 컴파일됩니다. 다른 사람은 기본 코드를 포함 할 수 있으며,이 코드는 기본 컴파일러가 필요합니다 ( gcc 또는 cl) 및 파이썬 인터페이스 모듈 (예 : swig 또는 pyrex).

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

python setup.py install

프로젝트를 개발 중이고이 파일이 무엇에 유용한 지 궁금해하는 경우 확인하십시오. 설정 스크립트 작성에 대한 파이썬 문서

setup.py 일반적으로 해당 언어로 작성된 라이브러리 또는 프로그램이 제공되는 파이썬 스크립트입니다. 목적은 소프트웨어의 올바른 설치입니다.

많은 패키지를 사용합니다 distutils 결합 된 프레임 워크 setup.py.

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

setup.py는 두 가지 시나리오에서 사용할 수 있습니다. 먼저 파이썬 패키지를 설치하려고합니다. 둘째, 자신만의 파이썬 패키지를 만들고 싶습니다. 일반적으로 Standard Python 패키지에는 setup.py, setup.cfg 및 manifest.in과 같은 몇 가지 중요한 파일이 있습니다. Python 패키지를 만들 때이 세 가지 파일은 (Egg-Info 폴더 아래의 PKG-Info의 내용) 이름, 버전, 설명, 기타 필요한 설치 (일반적으로 .txt 파일) 및 기타 매개 변수를 결정합니다. setup.cfg는 패키지가 생성되는 동안 setup.py에 의해 읽습니다 (tar.gz 일 수 있음). Manifest.in은 패키지에 포함되어야 할 사항을 정의 할 수있는 곳입니다. 어쨌든 당신은 setup.py like를 사용하여 많은 일을 할 수 있습니다.

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 터미널 (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. 완료!

다운로드 한 Python 패키지를 설치하려면 아카이브를 추출하고 Setup.py 스크립트를 실행합니다.

python setup.py install

나에게 이것은 항상 이상하다고 느꼈다. Ruby와 Nodejs에서와 같이 다운로드에서 패키지 관리자를 지적하는 것이 더 자연 스럽습니다. gem install rails-4.1.1.gem

패키지 관리자는 친숙하고 신뢰할 수 있기 때문에 더 편안합니다. 반면에, 각각 setup.py 패키지에만 해당되기 때문에 소설입니다. 그것은 협약에 대한 믿음을 요구합니다. "나는이 설정을 믿습니다. 그것은 정신 의지력에 대한 유감스러운 세금입니다.

나는 setup.py 워크 플로우가 패키지 관리자보다 안전하다고 말하는 것이 아닙니다 (Pip이 Setup.py를 내부로 실행한다는 것을 이해합니다). 동일한 패키지 관리자 응용 프로그램에 대한 명령에 대한 조화가 있습니다. 당신은 그것을 좋아할 수도 있습니다.

setup.py 다른 것과 같은 파이썬 파일입니다. 컨벤션을 제외하고는 이름을들을 수 있습니다. setup.py 각 스크립트마다 다른 절차가 없도록합니다.

가장 자주 setup.py 파이썬 모듈을 설치하는 데 사용되지만 다른 목적은 서버입니다.

모듈 :

아마도 이것은 가장 유명한 사용법 일 것입니다 setup.py 모듈에 있습니다. 그것들을 사용하여 설치할 수 있지만 pip, 오래된 Python 버전에는 포함되지 않았습니다 pip 기본적으로 별도로 설치해야했습니다.

모듈을 설치하고 싶지만 설치하고 싶지 않은 경우 pip, 유일한 대안은 setup.py 파일. 이것은 통해 달성 될 수 있습니다 python setup.py install. 이것은 Python 모듈을 루트 사전에 설치합니다 ( pip, easy_install ect).

이 방법은 종종 다음에 사용됩니다 pip 실패합니다. 예를 들어 원하는 패키지의 올바른 파이썬 버전을 통해 사용할 수없는 경우 pip아마도 더 이상 유지 관리되지 않기 때문에 소스를 다운로드하고 실행 중입니다. python setup.py install 컴파일 된 바이너리의 경우를 제외하고는 동일한 것을 수행합니다 (그러나 오류가 반환되지 않으면 파이썬 버전을 무시할 것입니다).

또 다른 사용 setup.py 소스에서 패키지를 설치하는 것입니다. 모듈이 아직 개발중인 경우 휠 파일을 사용할 수 없으며 설치하는 유일한 방법은 소스에서 직접 설치하는 것입니다.

파이썬 확장 구축 :

모듈이 빌드되면 A를 사용하여 배포 할 준비가 된 모듈로 변환 할 수 있습니다. 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. 이것은 파이썬 스크립트를 실행 파일로 변환합니다. 이를 통해 설명, 이름, 아이콘, 패키지 포함, ECT 제외 및 일단 실행하면 분산 가능한 응용 프로그램이 생성됩니다. The의 예 선적 서류 비치:

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는 그대로 실행됩니다 "__main__" 당신이 전화 할 때 기능을 설치하십시오 언급 된 다른 답변. 내부 Setup.py, 패키지를 설치하는 데 필요한 모든 것을 넣어야합니다.

공통 setup.py 함수

다음 두 섹션에서는 많은 SETUP.PY 모듈이 가지고있는 두 가지에 대해 논의합니다.

setuptools.setup

이 기능을 사용하면 지정할 수 있습니다 프로젝트 속성 프로젝트의 이름과 마찬가지로 버전 .... 가장 중요한 것은이 기능을 사용하면 다른 기능이 제대로 포장 된 경우 다른 기능을 설치할 수 있습니다. 보다 이 웹 페이지 setuptools.setup의 예를 보려면

Setuptools.setup의 이러한 속성을 사용하여 이러한 유형의 패키지를 설치할 수 있습니다.

  • 프로젝트로 가져 와서 나열된 패키지 pypi 사용 setuptools.findpackages:

    packages=find_packages(exclude=["docs","tests", ".gitignore", "README.rst","DESCRIPTION.rst"])

  • 패키지가 없습니다 pypi, 그러나 URL을 사용하여 다운로드 할 수 있습니다 종속성_LINKS

    dependency_links=["http://peak.telecommunity.com/snapshots/",]

사용자 정의 기능

이상적인 세상에서 setuptools.setup 당신을 위해 모든 것을 처리 할 것입니다. 불행히도 이것이 항상 그런 것은 아닙니다. 때로는 종속성 설치와 같은 특정 작업을 수행해야합니다. 하위 프로세스 명령, 패키지의 올바른 상태에 설치하는 시스템을 가져 오기 위해. 이것을 피하려고 노력하면, 이러한 기능은 혼란스러워하며 종종 OS 그리고 심지어 분포.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top