Tại sao Pypi?
Chỉ số gói Python [PYPI] là một kho phần mềm cho ngôn ngữ lập trình Python. PYPI giúp bạn tìm và cài đặt phần mềm được phát triển và chia sẻ bởi cộng đồng Python. Nếu bạn sử dụng lệnh
if __name__ == "__main__":
code outside of a class or function goes here
4, bạn đã sử dụng PYPI.Khi gói của bạn được xuất bản lên PYPI, mọi người đều có thể cài đặt và sử dụng nó với lệnh đơn giản quen thuộc:
pip install {your_package_name}
Tuyệt, hả?
Vì vậy, bạn cần làm gì để xuất bản gói của riêng bạn lên PYPI? Dưới đây là một danh sách ngắn các bước:
- Làm cho mã của bạn sẵn sàng xuất bản: Tạo gói Python, thêm các tệp cần thiết cho PYPI
- Tạo một tài khoản pypi nếu bạn đã có một tài khoản
- Tạo tài liệu lưu trữ phân phối và tải lên PYPI
- Cài đặt gói của riêng bạn bằng cách sử dụng
if __name__ == "__main__":
4
code outside of a class or function goes here
Bước 1. Làm cho mã của bạn xuất bản sẵn sàng
Hướng dẫn này sẽ lấy gói của tôi được gọi là
if __name__ == "__main__":
code outside of a class or function goes here
6 làm ví dụ thực tế. Bạn có thể tìm thấy nó ở đây trên PYPI, mã nguồn ở đây trên GitHub.Một số quy tắc của ngón tay cái:
- Xóa tất cả các câu lệnh
if __name__ == "__main__":
7 khỏi mã của bạn. Nếu bạn muốn thông báo hoặc đăng nhập một cái gì đó, hãy sử dụng ghi nhật ký.
code outside of a class or function goes here - Xóa tất cả các mã nằm ngoài một lớp hoặc chức năng. Mã đó [nếu thực sự cần thiết], hãy đặt nó theo hàm
if __name__ == "__main__":
8:
code outside of a class or function goes here
if __name__ == "__main__":
code outside of a class or function goes here
Tạo gói Python
Gói trong Python chỉ đơn giản là một thư mục có tên của gói của bạn. Thư mục này chứa các tệp [mô-đun] và các bộ phụ khác [gói phụ].
Và bạn cần đặt một tệp
if __name__ == "__main__":
code outside of a class or function goes here
9 [hai dấu gạch dưới và sau from . import indextools
from . import doctools__all__ = [
'indextools',
'doctools'
]
0] để đánh dấu thư mục này thành gói Python. Bên trong tệp if __name__ == "__main__":
code outside of a class or function goes here
9 này, bạn có thể chỉ định lớp bạn muốn người dùng truy cập thông qua giao diện gói.Tệp mẫu
from . import indextools
from . import doctools__all__ = [
'indextools',
'doctools'
]
2:from . import indextools
from . import doctools__all__ = [
'indextools',
'doctools'
]
Thêm các tệp cần thiết cho pypi
Nhu cầu PYPI theo tệp để làm việc:
from . import indextools
3 [chi tiết bên dưới]
from . import doctools__all__ = [
'indextools',
'doctools'
]from . import indextools
4 [Tệp giấy phép, nếu bạn chọn MIT, hãy lấy nội dung từ đây]
from . import doctools__all__ = [
'indextools',
'doctools'
]from . import indextools
5 [tùy chọn nhưng rất được khuyến khích]
from . import doctools__all__ = [
'indextools',
'doctools'
]from . import indextools
6 [tùy chọn nhưng rất được khuyến khích]
from . import doctools__all__ = [
'indextools',
'doctools'
]
Cấu trúc dự án mẫu:
.
|-- HISTORY.md
|-- LICENSE.txt
|-- README.md
|-- elastictools
| |-- __init__.py
| |-- __pycache__
| | |-- __init__.cpython-36.pyc
| | |-- doctools.cpython-36.pyc
| | `-- indextools.cpython-36.pyc
| |-- doctools.py
| `-- indextools.py
|-- setup.py
`-- tests
|-- test_doc_tools.py
`-- test_index_tools.py
Tệp from . import indextools
from . import doctools__all__ = [
'indextools',
'doctools'
]
3
from . import doctools
__all__ = [
'indextools',
'doctools'
]
Tệp setup.py chứa thông tin về gói của bạn mà pypi cần, như tên của nó, một mô tả, phiên bản hiện tại, v.v.
from setuptools import setup, find_packageswith open['README.md'] as readme_file:
README = readme_file.read[]
with open['HISTORY.md'] as history_file:
HISTORY = history_file.read[]
setup_args = dict[
name='elastictools',
version='0.1.2',
description='Useful tools to work with Elastic stack in Python',
long_description_content_type="text/markdown",
long_description=README + '\n\n' + HISTORY,
license='MIT',
packages=find_packages[],
author='Thuc Nguyen',
author_email='',
keywords=['Elastic', 'ElasticSearch', 'ElasticStack'],
url='//github.com/ncthuc/elastictools',
download_url='//pypi.org/project/elastictools/'
]
install_requires = [
'elasticsearch>=6.0.0,=6.0.0,=6.0.0,=6.0.0,=6.0.0,=6.0.0,=6.0.0,