Cách đóng Gói Và Phân Phối Các ứng Dụng Python
Có thể bạn quan tâm
Trong bài viết DigitalOcean này, ta sẽ nói về các công cụ cần thiết để phân phối và đi qua các bước chính để cho phép bạn đóng gói các thư viện, module hoặc ứng dụng hữu ích của riêng mình - những công cụ này sẽ giúp bạn khi triển khai dự án của bạn trên một server hoặc chia sẻ trên mạng.
Các gói và phân phối Python
Ngay cả khi bạn chỉ làm việc một chút với Python, bạn sẽ quen với khái niệm sử dụng trình quản lý gói (ví dụ: pip, easy_install) để download các module và thư viện (ví dụ: khung phát triển ứng dụng), sau đó được nhập và sử dụng để tạo mới một.
Các công cụ quản lý gói này, hoạt động local , kết nối với một nguồn (tức là Index gói Python - PyPI ) và thực hiện một hành động mong muốn (ví dụ: tìm kiếm và cài đặt) khi chúng hoạt động các tài nguyên này thực sự được gọi là bản phân phối Python.
Cách phân phối một ứng dụng bao gồm gói folder của nó bằng một số file phải có (cùng với một số file được đề xuất), chỉ định các phần tử liên quan (ví dụ: tài nguyên, phụ thuộc, v.v.) và phát hành hoặc sử dụng nó ở nơi khác… đơn giản vậy.
Lưu ý: Ta rất khuyến khích bạn làm việc với môi trường ảo để cô lập các bản download Python, module và ứng dụng mà bạn đang làm việc.
Gói Python
Trong Python, một gói [về mặt kỹ thuật] là một folder có thể nhập (với __init__.py ) chứa các file nguồn (tức là các module ). Điều này sẽ không bị nhầm lẫn với các gói hệ điều hành, là các ứng dụng thực tế [về mặt kỹ thuật] (tức là gói Debian). Tuy nhiên, cần lưu ý các bản phân phối Python thực sự cũng được gọi là các gói.
Cấu trúc gói ví dụ:
package | |-- __init__.pyỨng dụng Python
Mặc dù bất kỳ thứ gì từ một file đến một file với hàng trăm file nằm rải rác trên các gói khác nhau đều có thể được coi là một ứng dụng trong Python, trong hầu hết các tình huống thực tế, một ứng dụng sẽ bao gồm nhiều module và một lượng nhập bên ngoài nhất định (từ các thư viện).
Cấu trúc ứng dụng mẫu:
myapp | |-- __init__.py |-- amodule.py |-- anothermod.py |__ tests | | | |-- __init__.py | |-- .. | |-- . | ..Thư viện và công cụ phân phối Python
Với bản chất phổ biến của Python và số lượng thư viện / ứng dụng của bên thứ ba được viết cho nó, một cách phân phối đơn giản và thống nhất luôn là điều cần thiết. Đã có một số công cụ và thư viện khác nhau được sử dụng để tạo các bản phân phối Python.
Để đối phó với nhiệm vụ phân phối, tiện ích phân phối Python Toolset distutils đã được tạo ra.
Index gói Python (PyPI)
Python Package Index, hoặc PyPI, là một repository [trực tuyến] trung tâm cho các dự án (các bản phân phối Python). Các công cụ quản lý gói như pip sử dụng kho này để lưu trữ, tìm và cài đặt chúng.
Bắt đầu
Hãy bắt đầu với việc tạo một ứng dụng [cấu trúc] bình Python đơn giản, mà sau đó ta có thể sử dụng để đóng gói.
Tạo cấu trúc ứng dụng
Ta mong muốn tạo ra một ví dụ giống với hầu hết các dự án trong thế giới thực. Do đó, tốt nhất là bạn nên tưởng tượng một kịch bản với các thành phần được modularised.
Cấu trúc ví dụ:
/MyApplication |-- run.py |-- config.py |__ /app |-- __init__.py |-- /module_one |-- __init__.py |-- controllers.py |-- models.py |__ /templates |-- module_one |-- hello.html |__ /static |__ .. |__ .Tạo các folder :
mkdir ~/MyApplication cd ~/MyApplication touch run.py touch config.py mkdir app cd app touch __init__.py mkdir templates mkdir static mkdir module_one cd module_one touch __init__.py touch controllers.py touch models.py cd ../templates mkdir module_one cd module_one touch hello.htmlChỉnh sửa run.py bằng nano:
nano ~/MyApplication/run.pyĐặt nội dung:
# Run a test server. from app import app app.run(debug=True)Lưu và thoát bằng CTRL + X và xác nhận bằng Y.
Chỉnh sửa config.py bằng nano:
nano ~/MyApplication/config.pyĐặt nội dung:
DEBUG = True THREADS_PER_PAGE = 4 CSRF_ENABLED = True CSRF_SESSION_KEY = "secret"Lưu và thoát bằng CTRL+X và xác nhận bằng Y
Chỉnh sửa app / init .py bằng nano:
nano ~/MyApplication/app/__init__.pyĐặt nội dung:
from flask import Flask, render_template app = Flask(__name__) app.config.from_object("config") from app.module_one.controllers import module_one app.register_blueprint(module_one)Lưu và thoát bằng CTRL + X và xác nhận bằng Y.
Chỉnh sửa app / module_one / controllers.py bằng nano:
nano app/module_one/controllers.pyĐặt nội dung:
from flask import Blueprint, request, render_template module_one = Blueprint("auth", __name__, url_prefix="/auth") @module_one.route("/hello") def hello(): return render_template("module_one/hello.html")Lưu và thoát bằng CTRL+X và xác nhận bằng Y
Đặt nội dung:
Chỉnh sửa ứng dụng / mẫu / module_one / hello.html bằng nano:
nano app/templates/module_one/hello.htmlĐặt nội dung:
<pre> & lt! DOCTYPE html> & lthtml lang = “en”> & lthead> & lttitle> {% block title%} Trang web của tôi {% endblock%} </title> {% khối css%} {% endblock%} & ltmeta name = “viewport” content = “width = device-width, initial-scale = 1.0”> & lt / head> & ltbody> Chào thế giới! & lt / body> & lt / html> </pre>
Lưu và thoát bằng CTRL + X và xác nhận bằng Y.
Bắt đầu với Phân phối / Đóng gói Ứng dụng
Sau khi tạo cấu trúc ứng dụng mẫu của một trang web sử dụng flask, ta có thể tiếp tục thực hiện bước đầu tiên để chuẩn bị phân phối.
Thay đổi cấu trúc folder
Để đóng gói ứng dụng của ta tốt, ta cần thực hiện một số bổ sung vào cấu trúc folder của bạn .
/MyApplication |-- run.py |__ /app |-- __init__.py |-- /module_one |-- __init__.py |-- controllers.py |-- models.py |__ /templates |-- module_one |-- hello.html |__ /static |__ .. |__ . |-- setup.py # Distribution setup file |-- README.txt # Read-me file |-- MANIFEST.in # Distribution manifest file |-- CHANGES.txt # Changes logThay đổi cấu trúc folder để tạo các file cần thiết:
touch ~/MyApplication/setup.py touch ~/MyApplication/README.py touch ~/MyApplication/MANIFEST.py touch ~/MyApplication/CHANGES.py mv ~/MyApplication/run.py ~/MyApplication/bin/runTạo setup.py
nano ~/MyApplication/setup.pyĐặt các nội dung tự giải thích bên dưới:
from distutils.core import setup setup( # Application name: name="MyApplication", # Version number (initial): version="0.1.0", # Application author details: author="name surname", author_email="[email protected]", # Packages packages=["app"], # Include additional files into the package include_package_data=True, # Details url="http://pypi.python.org/pypi/MyApplication_v010/", # # license="LICENSE.txt", description="Useful towel-related stuff.", # long_description=open("README.txt").read(), # Dependent packages (distributions) install_requires=[ "flask", ], )Lưu và thoát bằng CTRL + X và xác nhận bằng Y.
Tạo MANIFEST.in
Nếu bạn cần gửi các folder bổ sung (ví dụ: tĩnh hoặc mẫu), bạn cần phải trình bày rõ ràng chúng trong tệp kê khai được đóng gói. Ta sẽ thực hiện việc này bên trong MANIFEST.in .
nano ~/MyApplication/MANIFEST.inĐặt các nội dung tự giải thích bên dưới:
recursive-include app/templates * recursive-include app/static *Lưu và thoát bằng CTRL + X và xác nhận bằng Y.
Và đó là nó! Gói phân phối Python của bạn đã sẵn sàng để được cài đặt và vận chuyển.
Các file bổ sung
Lưu ý để có một bản phân phối hoàn chỉnh, file / folder của bạn phải chứa (và được liên kết):
README.txt
MANIFEST.in
LICENSE.txt
Làm việc với ứng dụng sẵn sàng phân phối
Khi ta đã hoàn thành việc tạo ứng dụng của bạn , tiếp theo là thực hiện các sửa đổi cần thiết đối với cấu trúc file để chuẩn bị cho một bản dựng phân phối hoàn hảo, ta có thể bắt đầu thực hiện các thao tác đóng gói.
Cách tạo file phân phối
Để tạo bản sao file phân phối, hãy chạy như sau:
cd ~/MyApplication python setup.py sdistLệnh này sẽ đi qua cài đặt của bạn, in ra các thao tác đang được thực hiện và tạo một repository tar bên trong folder dist mới được tạo, tương tự như:
# root@hostname:~/MyApplication# ls dist # MyApplication-0.1.0.tar.gzLưu ý: Vì ta không điền tất cả các folder con (tức là tĩnh) và làm việc với các file bổ sung (ví dụ: README.txt ), bạn có thể thấy một số cảnh báo trong quá trình tạo.
Cách cài đặt ứng dụng
Từ bây giờ, ứng dụng của bạn có thể được người khác cài đặt và sử dụng bằng cách sử dụng file setup.py đã tạo.
Để cài đặt ứng dụng, hãy chạy như sau:
python setup.py installNếu cài đặt này là để phát triển và các yêu cầu cũng được cài đặt, hãy chạy như sau:
python setup.py developCách chia sẻ ứng dụng của bạn
Nếu bạn muốn chia sẻ mã của bạn trên Chỉ mục đóng gói Python, bạn có thể thực hiện bằng cách bắt đầu quy trình “đăng ký” như sau:
python setup.py registerBạn cần phải hoàn tất quy trình theo hướng dẫn trên màn hình.
Nếu bạn có đăng nhập đã đăng ký, để chỉ tải lên, bạn có thể sử dụng những điều sau:
python setup.py sdist uploadCách tạo các gói version mới cho ứng dụng của bạn
Chỉnh sửa file setup.py bằng editor (ví dụ: nano) và đặt số version mới: version="0.1.1"
Chỉnh sửa CHANGES.txt để áp dụng thay đổi
Thực hiện các điều chỉnh cần thiết đối với LICENSE.txt và README.txt
Tải lên mã của bạn theo bước trước đó.
<div class = “author”> Gửi bởi: <a href = “https://twitter.com/ostezer”> Hệ điều hành Tezer </a> </div>
Tags:Các tin liên quan
Cách triển khai ứng dụng web WSGI Python dựa trên kim tự tháp 2013-12-30 Cách triển khai ứng dụng WSGI Python bằng server Gunicorn HTTP đằng sau Nginx 2013-12-12 Cách triển khai ứng dụng WSGI Python bằng web server uWSGI với Nginx 2013-12-11 Cách triển khai ứng dụng WSGI Python bằng web server CherryPy đằng sau Nginx 2013-12-10 Cách sử dụng khung kim tự tháp để xây dựng ứng dụng web Python của bạn trên Ubuntu 2013-12-10 Cách thiết lập Python 2.7.6 và 3.3.3 trên CentOS 6.4 2013-12-04 Các công cụ Python phổ biến: Sử dụng virtualenv, Cài đặt bằng Pip và Quản lý Gói 2013-12-03 Cách tạo plugin Nagios bằng Python trên Ubuntu 12.10 2013-04-29 Cách tạo plugin Nagios bằng Python trên CentOS 6 2013-04-29Từ khóa » đóng Gói ứng Dụng Python
-
Đóng Gói Chương Trình Python Với Pyinstaller
-
Python: Sử Dụng PyInstaller để Dễ Dàng Phân Phối Các ứng Dụng ...
-
Cách đóng Gói Code Python - AnonyViet
-
Hướng Dẫn Chuyển File Python .PY Sang .EXE - YouTube
-
Python #95: Install And Package .py Source Code With Pyinstaller
-
Mọi Người ơi Cho Em Hỏi E đóng Gói 1 Chường Trình Python Bằng ...
-
Hỏi Về Cách đóng Gói .exe Bằng Pyinstaller - Dạy Nhau Học
-
Làm Thế Nào để đóng Gói ứng Dụng Viết Bằng ...
-
Hướng Dẫn Cơ Bản Bằng Gói Pyinstaller Gói Exe - Python - Mofun IT
-
Làm Thế Nào để đóng Gói ứng Dụng Viết Bằng ... - Dạy Nhau Học
-
Hướng Dẫn Chuyển File Python .PY Sang .EXE - Morioh
-
Cách đóng Gói Code Project Thành File EXE Bằng MS Visual Studio
-
Gói Phần Mềm Cài đặt Python
-
[ Python Và ứng Dụng ] Lập Trình Thư Viện Cho VBA Bằng Python