어떻게 파이선 module/package 쓸?
나는 단순 작업에 일터에서 그리고 다른 사람들이 사용하기 위해 결코bothered 포장들을 파이썬 스크립트를 만들어 왔어요.이제 나는 REST API에 대한 파이선 래퍼를 만들기 위해 배정되었다.나는 도움이 필요해 어떻게 처음에는 정말로 모르겠다.
나는 무엇이 있습니다.
(그냥 가능한 특정하고 싶다.)나는 virtualenv 준비가 되어, 그것은 또한을 github에, 이무기의.gitignore 파일도 또한은, REST API와 상호 작용을, 그 요구 도서관이 있다.바로 그겁니다.
여기 현재 디렉터리 나무가 있습니다.
.
├── bin
│ └── /the usual stuff/
├── include
│ └── /the usual stuff/
├── lib
│ └── python2.7
│ └── /the usual stuff/
├── local
│ └── /the usual stuff/
└── README.md
27 directories, 280 files
하더라도, 나는 내가 만들면 이곳은 .py 파일들을 할지 모르겠어요.
나는 할:무엇을 원했다.
비단뱀 모듈"씨를 설치하다..."과install-able하다.
가능하다면 파이썬 모듈 쓰기를 밟다 과정에서 일반적인 단계에요.
모듈이란 파일 파이선 정의와 진술이 포함된입니다.그 접미사를 붙이는 파일 이름은 모듈 이름입니다..py
만들다hello.py
그리고:해당 콘텐츠로 다음 함수를 쓴다.
def helloworld():
print "hello"
그럼 가져올 수 있hello
:
>>> import hello
>>> hello.helloworld()
'hello'
>>>
많은 그룹으로 구성하기 위해.py
파일을 폴더에 저장합니다.다음 파일이 있는 폴더__init__.py
python에 의해 모듈로 간주되며 패키지라고 할 수 있습니다.
|-HelloModule
|_ __init__.py
|_ hellomodule.py
모듈의 import 스테이트먼트를 통상의 방법으로 실시할 수 있습니다.
Python 3 - 2015년 11월 18일 업데이트
받아들여진 답변이 유용하다는 것을 알았지만, 자신의 경험을 바탕으로 다른 사람의 이익을 위해 몇 가지 사항을 더 자세히 설명하고 싶었다.
모듈: 모듈은 Python 정의 및 문이 들어 있는 파일입니다.파일명은 .py라는 접미사가 붙은 모듈명입니다.
모듈 예:현재 디렉토리에 단일 python 스크립트가 있다고 가정합니다.여기서 mymodule이라고 부릅니다.화이
mymodule.py 파일에는 다음 코드가 포함되어 있습니다.
def myfunc():
print("Hello!")
현재 디렉토리에서 python3 인터프리터를 실행하면 다음과 같은 다양한 방법으로 함수 myfunc를 Import 및 실행할 수 있습니다(일반적으로 다음 중 하나를 선택합니다.
>>> import mymodule
>>> mymodule.myfunc()
Hello!
>>> from mymodule import myfunc
>>> myfunc()
Hello!
>>> from mymodule import *
>>> myfunc()
Hello!
그래, 그건 충분히 쉬웠어.
현재 작업 디렉토리에서 애드혹을 실행하는 것이 아니라 모듈 네임스페이스를 제공하기 위해 이 모듈을 자체 전용 폴더에 넣을 필요가 있다고 가정합니다.여기서 패키지의 개념을 설명할 가치가 있습니다.
패키지:패키지는 "점 있는 모듈 이름"을 사용하여 Python의 모듈 이름 공간을 구성하는 방법입니다.예를 들어 모듈 이름 A입니다.B는 A라는 이름의 패키지로 B라는 이름의 서브모듈을 지정합니다.모듈을 사용하면 서로 다른 모듈의 작성자가 서로의 글로벌 변수 이름에 대해 걱정할 필요가 없듯이, 도트 모듈 이름을 사용하면 NumPy나 Python Imaging Library와 같은 멀티 모듈 패키지의 작성자가 서로의 모듈 이름에 대해 걱정할 필요가 없습니다.
패키지 예시:이제 다음과 같은 폴더와 파일이 있다고 가정해 보겠습니다.여기서 mymodule.py은 이전과 동일하며 __init_.py는 빈 파일입니다.
.
└── mypackage
├── __init__.py
└── mymodule.py
__init_.py 파일은 Python이 디렉토리를 패키지가 포함된 것으로 취급하기 위해 필요합니다.자세한 내용은 나중에 제공되는 모듈 문서 링크를 참조하십시오.
현재 작업 디렉토리는 mypackage라는 일반 폴더보다 한 단계 위입니다.
$ ls
mypackage
지금 python3 인터프리터를 실행하면 필요한 함수 myfunc를 포함하는 모듈 mymodule.py을 다음과 같은 다양한 방법으로 Import하여 실행할 수 있습니다(일반적으로 다음 중 하나를 선택합니다).
>>> import mypackage
>>> from mypackage import mymodule
>>> mymodule.myfunc()
Hello!
>>> import mypackage.mymodule
>>> mypackage.mymodule.myfunc()
Hello!
>>> from mypackage import mymodule
>>> mymodule.myfunc()
Hello!
>>> from mypackage.mymodule import myfunc
>>> myfunc()
Hello!
>>> from mypackage.mymodule import *
>>> myfunc()
Hello!
Python 3을 가정할 때, 모듈에는 훌륭한 문서가 있습니다.
패키지 및 모듈의 명명 규칙에 대해서는 일반적인 가이드라인이 PEP-0008에 기재되어 있습니다.「패키지 및 모듈명」을 참조해 주세요.
모듈은 모두 소문자로 된 짧은 이름을 사용해야 합니다.가독성이 향상되면 모듈 이름에 밑줄을 사용할 수 있습니다.또한 Python 패키지는 모두 소문자로 된 짧은 이름을 사용해야 합니다. 단, 밑줄 사용은 권장되지 않습니다.
아직 아무도 OP의 이 문제를 다루지 않았기 때문에:
나는 할:무엇을 원했다.
pip install ...을 사용하여 python 모듈을 설치 가능한 상태로 만듭니다.
다음은 패키지를 준비하여 PyPI에 업로드하는 기본적인 절차를 보여 주는 최소한의 예입니다.setuptools
그리고.twine
.
이것은 적어도 튜토리얼을 읽는 것을 대신할 수 있는 것은 아닙니다.이 기본적인 예에서 다루는 것보다 훨씬 더 많은 것이 있습니다.
패키지 작성 자체는 이미 다른 답변에서 다루어지고 있습니다.따라서 이 절차와 프로젝트 구조는 다음과 같습니다.
.
└── hellostackoverflow/
├── __init__.py
└── hellostackoverflow.py
사용하기 위해서setuptools
패키징을 위해 파일을 추가해야 합니다.setup.py
프로젝트의 루트 폴더에 들어갑니다.
.
├── setup.py
└── hellostackoverflow/
├── __init__.py
└── hellostackoverflow.py
최소한 패키지의 메타데이터를 지정합니다.setup.py
다음과 같습니다.
from setuptools import setup
setup(
name='hellostackoverflow',
version='0.0.1',
description='a pip-installable package example',
license='MIT',
packages=['hellostackoverflow'],
author='Benjamin Gerfelder',
author_email='benjamin.gerfelder@gmail.com',
keywords=['example'],
url='https://github.com/bgse/hellostackoverflow'
)
이왕 이렇게license='MIT'
, 델은, 프로젝트에 카피를 짜넣고 있습니다.LICENCE.txt
reStructured의 readme 파일과 함께텍스트 이름README.rst
:
.
├── LICENCE.txt
├── README.rst
├── setup.py
└── hellostackoverflow/
├── __init__.py
└── hellostackoverflow.py
이 시점에서, 다음의 방법으로 패키징을 개시할 준비가 되어 있습니다.setuptools
인스톨 되어 있지 않은 경우는, 로 인스톨 할 수 있습니다.pip
:
pip install setuptools
그러기 위해서, 이 기능을 사용해source distribution
프로젝트 루트 폴더에서는,setup.py
커맨드 라인으로부터, 필요한 것을 지정해 주세요.sdist
:
python setup.py sdist
이것은 우리의 배포 패키지와 eg-info를 만들고, 우리의 패키지와 함께 다음과 같은 폴더 구조를 만들 것입니다.dist
:
.
├── dist/
├── hellostackoverflow.egg-info/
├── LICENCE.txt
├── README.rst
├── setup.py
└── hellostackoverflow/
├── __init__.py
└── hellostackoverflow.py
이 시점에서, 다음의 방법으로 인스톨 할 수 있는 패키지가 있습니다.pip
프로젝트 루트(다음 예시와 같이 모든 이름을 사용할 수 있습니다)를 참조해 주세요.
pip install ./dist/hellostackoverflow-0.0.1.tar.gz
모든 것이 잘 되면 Python 인터프리터를 오픈할 수 있습니다.프로젝트 디렉토리 이외의 장소에서 혼동을 피하고, 빛나는 새로운 패키지를 사용해 보겠습니다.
Python 3.5.2 (default, Sep 14 2017, 22:51:06)
[GCC 5.4.0 20160609] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from hellostackoverflow import hellostackoverflow
>>> hellostackoverflow.greeting()
'Hello Stack Overflow!'
패키지의 설치와 동작을 확인했으므로 PyPI에 업로드 할 수 있습니다.
실험으로 라이브 저장소를 오염시키고 싶지 않기 때문에 테스트 저장소용 계정을 만들고 설치한다.twine
업로드 프로세스의 경우:
pip install twine
어카운트가 생성되어 이제 거의 완성되었습니다.twine
패키지를 업로드하기 위해 인증 정보를 요청하고 지정된 저장소에 패키지를 업로드합니다.
twine upload --repository-url https://test.pypi.org/legacy/ dist/*
이제 PyPI 테스트 저장소의 계정에 로그인하여 새로 업로드한 패키지에 잠시 감탄한 후pip
:
pip install --index-url https://test.pypi.org/simple/ hellostackoverflow
보시다시피 기본적인 과정은 그다지 복잡하지 않습니다.앞서 말씀드렸듯이, 여기서 설명하는 것 외에 더 많은 것이 있기 때문에 자세한 설명은 튜토리얼을 읽어보시기 바랍니다.
선택한 명령어를 정의하면 저장된 파일을 python 프로그램 파일의 Lib 폴더로 드래그 앤 드롭할 수 있습니다.
>>> import mymodule
>>> mymodule.myfunc()
hello.py 라는 이름의 파일을 만듭니다.
Python 2.x를 사용하는 경우
def func():
print "Hello"
Python 3.x를 사용하는 경우
def func():
print("Hello")
파일을 실행합니다.그런 다음 다음을 시도할 수 있습니다.
>>> import hello
>>> hello.func()
Hello
조금 딱딱하게 하고 싶은 경우는, 다음을 사용할 수 있습니다.
Python 2.x를 사용하는 경우
def say(text):
print text
Python 3.x를 사용하는 경우
def say(text):
print(text)
정의 옆에 괄호 안에 있는 거 보여?그게 중요해요.이는 정의 내에서 사용할 수 있는 것입니다.
텍스트 - 프로그램에서 원하는 말을 할 때 사용할 수 있습니다.이름 그대로 텍스트입니다.문자가 무슨 뜻인지 알았으면 좋겠다.그것은 "단어" 또는 "문장"을 의미합니다.
파일을 실행합니다.그런 다음 Python 3.x를 사용하는 경우 다음을 시도할 수 있습니다.
>>> import hello
>>> hello.say("hi")
hi
>>> from hello import say
>>> say("test")
test
Python 2.x의 경우 - Python 3도 마찬가지라고 생각합니다.전혀 모릅니다.Python 2.x에서 실수를 했다면 정정해주세요(Python 2는 알지만 Python 3은 사용 중입니다)
모듈이란 파일 파이선 정의와 진술이 포함된입니다.파일명은 모듈명으로 .py라는 접미사가 붙습니다.
다음 함수를 콘텐츠로 하여 hello.py이라는 파일을 만듭니다.
def helloworld():
print "hello"
그럼 넌 할 수 있어
import hello
hello.helloworld()
많은 .py 파일을 그룹화하려면 폴더에 저장합니다.init.py이 있는 폴더는 python에 의해 모듈로 간주되며 패키지라고 할 수 있습니다.
|-Hello Module |_ init.py |_ hellomodule.화이
언급URL : https://stackoverflow.com/questions/15746675/how-to-write-a-python-module-package
'programing' 카테고리의 다른 글
Python의 "property"와 "attribute"의 차이점은 무엇입니까? (0) | 2022.09.28 |
---|---|
VueJS 동적 속성 이름이 값을 업데이트하지 않음 (0) | 2022.09.28 |
위도와 경도를 얼마나 정확하게 저장해야 합니까? (0) | 2022.09.27 |
문자열 배열에 문자열 추가 (0) | 2022.09.27 |
하위 배열 값을 사용하여 PHP 배열을 알파벳 순으로 정렬합니다. (0) | 2022.09.27 |