PYNPM 개발자 디코딩 패키지
npm
.그것은 세계에서 가장 큰 소프트웨어 등록 센터로 주위의 생태계는 선진적이고 성숙하다.내가 유지하고 있는 소스 npm 패키지password-validator
를 파이톤에 이식하려고 시도했을 때 나는 이 점을 깨달았다.나는 자바스크립트 세계에서 나에게 매우 직관적인 것을 찾아내는 데 몇 주가 걸렸다.이 블로그는 내가 이 두 생태계 사이에서 발견한 관건적인 차이점을 열거하여 다른 같은 길을 걷는 사람들이 참고하도록 제공할 것이다.본 문서가 끝날 때, 우리는 다음과 같은 도구를 사용하여 우리의 소프트웨어 패키지를 설치할 수 있어야 한다.pip install <my-awesome-package>
소포는 무엇입니까?
npm
에서 package.json
파일을 포함하는 모든 폴더는 패키지입니다.파이썬 세계에서, 우리는 프로젝트를 PyPi 패키지로 만들기 위해 루트 폴더에 setup.py
라는 파일이 필요합니다. 이것은 파이썬 패키지의 공공 저장소입니다.이 파일은 이름, 버전, 저자, 심지어 의존항 (catch) 과 같은 메타데이터를 설명하는 데 사용됩니다.이것sample setup.py file을 보면 알 수 있어요.일반적인 경우, 실제 패키지 코드는 패키지 이름이 있는 디렉터리에 놓여 있으며, 모듈임을 표시하기 위해
__init__.py
파일을 포함해야 한다.그래서 디렉터리 구조가 많든 적든 비슷해 보인다.package-project ├── setup.py └── my-package ├── __init__.py └── lib.py
In this structure your actual package code will go in __init__.py
and/or any other python file in this directory like lib.py
.
의존 관계 관리
Dependency management is one area where I found Python ecosystem lacking and primordial. npm
has concepts like dependencies
and devDependencies
and package-lock
which make dependency management easier. The manifest file setup.py
has a section called install-requires
which is a list of the dependencies required to run the project. These dependencies are downloaded while installing the package using pip
. It's not very widely used to define the exact dependencies and dependencies of dependencies.
Instead, a combination of a virtual environment and requirements file is used.
가상 환경
npm
allows installing packages globally or local to a project. In pip
, all packages are installed globally. To separate the local dependencies from system-wide packages, a virtual environment is created which contains all the dependencies local to the project and even a local Python distribution. Code running in a virtual environment doesn't require any system dependency, so one can be assured that the code should run in all systems wherever the local virtual environment is set up correctly.
There are multiple ways of setting up a virtual environment, like venv
and virtualenv
. I found former to be the easiest to use.
python3 -m venv <dir>
위의 명령은 디렉터리 <dir>
에 가상 환경을 만들었습니다. 이것은 이 디렉터리는 프로그램 실행에 필요한 모든 내용을 포함합니다. Python과 pip 버전을 포함합니다.이 디렉터리는 버전 제어에 제출할 필요가 없습니다.가상 환경을 사용하려면'활성화'해야 합니다.source <dir>/bin/activate
요구 사항 파일
모든 가상 환경에는 자신의 pip와 Python 버전이 있습니다.그래서 당신이 시작했을 때 모든 것이 순조롭게 진행되었다.종속성을 설치할 때 다음과 같은 방법으로 종속성을 기록할 수 있습니다.
pip freeze > requirements.txt
이것은 pip에 설치된 모든 패키지와 버전을 파일requirements.txt
에 기록할 것이다.파일 이름은 모든 이름이 될 수 있지만 파이썬 커뮤니티에서 이 이름을 사용하는 것은 관례입니다.파이톤에는 devdependency 개념이 없지만, 일부 항목에 대해서는 requirements-dev.txt
을 사용하여 프로젝트를 기록하는 devdependency가 적지 않다.이것은 sample requirements file입니다.이제 프로젝트의 종속성을 다음과 같이 설치할 수 있습니다.
pip install -r requirements.txt
문서
JSDocs
는 자바스크립트로 코드 문서를 작성하는 데 가장 자주 사용하는 방법이며, 문서 도구의 목록은 여기까지입니다.파이톤의 문서는 매우 중시된다.스핑크스
Sphinx
는 파이톤 문서 생성기로서 다양한 확장을 제공하기 때문에 다양한 방식으로 사용할 수 있다.sphinx를 사용하기 위해서는 conf.py
파일이 필요합니다. sphinx의 설정을 포함합니다.sphinx-quickstart
CLI 유틸리티를 사용하여 파일을 생성할 수 있습니다.다음은 sample conf.py file 시작입니다.Sphinx와 Python 생태계는 자바스크립트 세계에서 흔히 볼 수 있는 태그가 아닌 문서
reStructuredText
(rest)를 선호한다.M↓ 스핑크스와 함께 사용할 수도 있지만 작업과 휴식은 M과 매우 비슷하다↓. 이것은 견본README in reST이다.파일 열
Sphinx는 Python 코드의 특수 주석을 보고 문서에 포함할 수 있습니다.함수, 클래스 등을 설명하는 데 사용되는 주석
Docstrings
은 자바스크립트의 JSDocs와 자바의 자바스크립트와 매우 비슷하다.여기에는 Docstrings로 기록하는 방법이 있습니다.def add(a, b):
''' Performs addition of 2 numbers
Example:
>>> res = add(1, 2)
3
Returns:
int: Result of addition
'''
return a + b
docstring을 작성하는 데는 여러 가지 형식이 있는데, docstring 자체가 주제 토론이다.나는 내가 돌아왔다는 것을 발견했다this guide by RealPython. 나는 docstring을 더욱 깊이 이해하기 위해 읽어 보라고 제안했다.reSt 파일과 Docstring을 결합하여 Sphinx를 사용하여 PDF와 HTML 등의 형식의 문서를 생성할 수 있습니다.이것은 sample HTML documentation 사자 인형을 사용하여 생성된 것이다.Sphinx는 가장 인기 있는 대체품이고, Sphinx도 가장 인기 없는 대체품이다.
ReadTheDocs 테스트
나는 성숙한 내장 도구가 있기 때문에 JavaScript로 단원 테스트를 작성하는 것보다 파이톤으로 단원 테스트를 작성하는 것이 더 쉽다는 것을 발견했다.
단원 테스트
파이톤에는 테스트를 실행할 수 있는 내장 모듈 이 있다.문법은 Jest 또는 Mocha와 매우 비슷합니다.모든'테스트'는 하나의 종류이고, 모든 종류의 방법은 하나의 테스트 용례이다.
unittest
와setUp()
같은 방법은 자바스크립트 테스트 프레임워크의teardown()
와before
방법에 해당하는 특수한 의미를 가진다.이것은 after
입니다.테스트는 다음 사용자가 수행합니다.python3 -m unittest discover -s <test_directory>
sample test file와Pytest는 몇 가지 대체 방안이지만, 나는 unittest
가 충분하다는 것을 발견했다.코 박사 01 명
문서 부분의 앞에서 우리는 docstring에 대해 토론했다.Docstring의 예제 섹션에서는 함수를 사용하는 방법을 보여 줍니다.가장 좋은 것은, 우리는 (또 다른 내장 모듈) 을 사용하여 자동 단원 테스트에서 이 예시를 실행할 수 있다는 것이다.이것은 문서와 실현을 동기화시킬 수 있다.
박사 01 명 출판업
패키지는 구축 후 PyPi에 게시할 수 있습니다.초기의 구축은 Egg 형식으로 이루어졌으나, 지금은 Wheel 형식으로 대체되었다.바퀴 구조를 만들려면 설치
setuptools
와wheel
가 필요합니다.python3 -m pip install --user --upgrade setuptools wheel
다음 명령을 실행하여 구문을 작성할 수 있습니다.python3 setup.py sdist bdist_wheel
이렇게 하면 dist
폴더에 두 개의 파일이 생성됩니다..tar.gz
라는 빌드 파일이 설치될 준비가 되었습니다..whl
이 필요하다.python3 -m pip install --user --upgrade twine
마지막 단계에서 구문을 업로드합니다.python3 -m twine upload --repository testpypi dist/*
twine
사용자 정의나 전용 npm 등록표 같은 특정한 패키지 저장소를 선택할 수 있습니다.이것은
파일을 설정할 수 있습니다.-- 저장소 추가 자원
문제 해결에 도움이 되는 두 가지 리소스가 있습니다.
Python Packaging User Guide . 나는 검색 결과에 나타난 본 사이트의 어떤 링크를 클릭하는 것을 건의합니다.
만약 네가 내가 여기서 언급한 절차에 대해 어떤 문제가 있다면 반드시 평론을 발표하거나 평론을 발표해야 한다.출판 즐거움!
Reference
이 문제에 관하여(PYNPM 개발자 디코딩 패키지), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/tbking/pypi-packages-decoded-for-npm-developers-51j4텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)