나는 직장에서 간단한 작업을 위해 Python 스크립트를 만들었고 다른 사람들이 사용할 수 있도록 포장하지 않았습니다. 이제 REST API 용 Python 래퍼를 만들도록 지정되었습니다. 시작하는 방법을 전혀 몰라 도움이 필요합니다.
내가 가진 것 :
(가능한 한 구체적으로하고 싶습니다) 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 파일을 어디에 넣을 지조차 모르겠습니다.
내가하고 싶은 것 :
“pip install …”으로 파이썬 모듈을 설치 가능하게 만드십시오.
가능하다면 파이썬 모듈 작성에 대한 일반적인 단계별 프로세스를 원합니다.
답변
모듈은 파이썬 정의와 문장을 포함하는 파일입니다. 파일 이름은 접미사가있는 모듈 이름입니다..py
작성 hello.py
내용으로 다음과 같은 함수를 작성 후 :
def helloworld():
print "hello"
그런 다음 가져올 수 있습니다 hello
.
>>> import hello
>>> hello.helloworld()
'hello'
>>>
많은 .py
파일 을 그룹화하려면 폴더에 넣으십시오. 가있는 폴더 __init__.py
는 파이썬에서 모듈로 간주되며 패키지라고 할 수 있습니다
|-HelloModule
|_ __init__.py
|_ hellomodule.py
일반적인 방법으로 모듈의 import 문을 사용할 수 있습니다.
답변
Python 3-2015 년 11 월 18 일 업데이트
인정 된 답변이 유용하다는 것을 알았지 만 내 경험에 따라 다른 사람들의 이익을 위해 여러 가지 점을 확대하고자했습니다.
모듈 : 모듈은 파이썬 정의와 문장을 포함하는 파일입니다. 파일 이름은 접미사 .py가 추가 된 모듈 이름입니다.
모듈 예제 : 현재 디렉토리에 단일 파이썬 스크립트가 있다고 가정합니다. 여기서 mymodule.py 라고 부릅니다.
mymodule.py 파일 에는 다음 코드가 포함되어 있습니다.
def myfunc():
print("Hello!")
현재 디렉토리에서 python3 인터프리터를 실행 하면 다음과 같은 다른 방법으로 myfunc 함수를 가져오고 실행할 수 있습니다 (일반적으로 다음 중 하나만 선택).
>>> import mymodule
>>> mymodule.myfunc()
Hello!
>>> from mymodule import myfunc
>>> myfunc()
Hello!
>>> from mymodule import *
>>> myfunc()
Hello!
좋아, 그래서 그것은 충분히 쉬웠다.
이제 현재 작업 디렉토리에서 임시로 실행하는 대신 모듈 네임 스페이스를 제공하기 위해이 모듈을 전용 폴더에 넣어야한다고 가정하십시오. 여기에서 패키지 의 개념을 설명 할 가치가 있습니다.
패키지 : 패키지는“점 모듈 이름”을 사용하여 Python의 모듈 네임 스페이스를 구성하는 방법입니다. 예를 들어, 모듈 이름 AB는 A라는 패키지에 B라는 서브 모듈을 지정합니다. 모듈을 사용하면 다른 모듈의 작성자가 서로의 전역 변수 이름에 대해 걱정할 필요가없는 것처럼 점이있는 모듈 이름을 사용하면 작성자가 절약됩니다. NumPy 또는 Python Imaging Library와 같은 다중 모듈 패키지는 서로의 모듈 이름에 대해 걱정할 필요가 없습니다.
패키지 예 : 이제 다음과 같은 폴더와 파일이 있다고 가정합니다. 여기서 mymodule.py 는 이전과 동일하고 __init__.py 는 빈 파일입니다.
.
└── mypackage
├── __init__.py
└── mymodule.py
__init__.py 파일은 파이썬이 디렉토리를 패키지를 포함하는 것으로 취급하도록하는데 필요합니다. 자세한 내용은 나중에 제공되는 모듈 설명서 링크를 참조하십시오.
현재 작업 디렉토리는 mypackage 라는 일반 폴더보다 한 수준 위입니다.
$ ls
mypackage
이제 python3 인터프리터를 실행 하면 필요한 함수 myfunc 가 포함 된 mymodule.py 모듈을 다음과 같은 방식으로 가져와 실행할 수 있습니다 (일반적으로 다음 중 하나를 선택 함).
>>> 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!
파이썬 3 가정에서 훌륭한 문서가있다 : 모듈
패키지 및 모듈의 명명 규칙과 관련하여 일반적인 지침은 PEP-0008에 나와 있습니다. 패키지 및 모듈 이름을 참조하십시오
모듈은 짧은 소문자 이름을 가져야합니다. 가독성을 높이려면 모듈 이름에 밑줄을 사용할 수 있습니다. 밑줄은 사용하지 않는 것이 좋지만 파이썬 패키지는 소문자로 된 짧은 소문자 이름을 가져야합니다.
답변
아직 OP에 대한이 질문을 아무도 다루지 않았으므로 :
내가하고 싶은 것 :
“pip install …”으로 파이썬 모듈을 설치 가능하게 만드십시오.
여기서 절대 최소한 예 및 제조에 사용 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
reStructuredText의 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
그러면 배포 패키지와 egg-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 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
우리가 볼 수 있듯이 기본 프로세스는 그리 복잡하지 않습니다. 앞서 말했듯이 여기에서 다루는 것보다 훨씬 더 많은 것이 있으므로 자세한 설명 은 자습서 를 읽으십시오 .
답변
선택한 명령을 정의한 후에는 저장된 파일을 파이썬 프로그램 파일의 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)
define 옆의 괄호에있는 것을 보시겠습니까? 중요합니다. define 내에서 사용할 수있는 것입니다.
텍스트-프로그램이 원하는 것을 말하고 싶을 때 사용할 수 있습니다. 이름에 따르면 텍스트입니다. 텍스트의 의미를 알고 싶습니다. “단어”또는 “문장”을 의미합니다.
파일을 실행하십시오. 그런 다음 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과 함께 사용됩니다)
답변
프로젝트 스켈레톤을 처음부터 쉽게 시작할 수있는 프로젝트를 만들었습니다 . https://github.com/MacHu-GWU/pygitrepo-project .
그리고 테스트 프로젝트를 만들 수 있습니다 learn_creating_py_package
.
다음과 같이 다른 목적으로 사용해야 할 구성 요소를 배울 수 있습니다 .
- virtualenv를 작성하십시오
- 자체 설치
- unittest를 실행
- 코드 커버리지 실행
- 문서 작성
- 문서 배포
- 다른 파이썬 버전에서 unittest를 실행하십시오.
- PYPI에 배포
사용의 장점은 pygitrepo
그 지루한가 자동으로 생성하고 적용하여된다는 점이다 package_name
, project_name
, github_account
, document host service
, windows or macos or linux
.
프로처럼 파이썬 프로젝트 개발을 배우기에 좋은 곳입니다.
이것이 도움이되기를 바랍니다.
감사합니다.