1. Python और लाइसेंस वाला फ़ीचर तैयार करें
व्यावसायिक Python कमांड-लाइन या डेस्कटॉप ऐप में ग्राहक की लाइसेंस कुंजी जोड़ें और सुरक्षित फ़ीचर चलाने से पहले अनुमति जाँचें। ये जाँच आपके ऐप की पहुँच नियंत्रित करती हैं; Python इंटरप्रेटर का ओपन-सोर्स लाइसेंस नहीं बदलतीं। ऐप सक्रियण के लिए इनपुट लेता है और काम करने वाला कॉलबैक प्रदान करता है।
डिवाइस कोटा वर्तमान सक्रियणों से गिना जाता है और रिलीज़ पर लौटता है। सामान्य लाइसेंस ऑफ़लाइन भी गिने जाते हैं; फ्लोटिंग लाइसेंस की लीज़ समाप्त होने पर भी कोटा अपने आप लौटता है।
- कंसोल > उत्पाद से उत्पाद ID कॉपी करें। उसी उत्पाद की हस्ताक्षर सार्वजनिक कुंजियाँ खोलें और हर कुंजी ID/सार्वजनिक कुंजी जोड़ी को आरंभिक कोड में डालें; YOUR_PRODUCT_ID, YOUR_KEY_ID और YOUR_PUBLIC_KEY बदलें। त्वरित एकीकरण यह कोड भी बना सकता है। उत्पाद कॉन्फ़िगरेशन फ़ाइल नहीं चाहिए; SDK डिफ़ॉल्ट रूप से https://www.licentivo.com से जुड़ता है।
- Python 3.10 या नया संस्करण स्थापित करके प्रोजेक्ट डायरेक्टरी बनाएँ।
- Licentivo त्वरित एकीकरण में उत्पाद बनाएँ या चुनें। उसकी नीति और लाइसेंस में बिना गणना वाला export फ़ीचर अनुमत रखें।
2. वर्चुअल एनवायरनमेंट में स्थापित करें
अपने ऐप प्रोजेक्ट में नीचे दिया गया कमांड चलाकर या बिल्ड डिपेंडेंसी जोड़कर SDK 0.11.6 इंस्टॉल करें। पैकेज मैनेजर SDK प्राप्त करता है; सोर्स ZIP डाउनलोड करके निकालने या लोकल सोर्स पाथ सेट करने की ज़रूरत नहीं है।
python -m venv .venv
./.venv/Scripts/python.exe -m pip install "licentivo-sdk==0.11.6"python3 -m venv .venv
./.venv/bin/python -m pip install "licentivo-sdk==0.11.6"3. निर्यात से पहले लाइसेंस सत्यापित करें
अपने ऐप के शुरू होने या सक्रियण पर SDK आरंभ करें। सक्रियण फ़ॉर्म से ग्राहक की कुंजी पढ़ें और उत्पाद ID तथा विश्वसनीय कुंजियाँ दें। ऐप बंद होने तक क्लाइंट रखें। वास्तविक कार्य के प्रवेश पर run_feature लगाकर निर्यात उदाहरण की जगह अपना फ़ंक्शन दें।
"""A protected operation to move into your own application's business handler."""
import os
import sys
from pathlib import Path
from licentivo import Client
# BEGIN LICENTIVO PRODUCT
# Copy Product ID and all key ID/public key pairs from Console > Products > Signing public keys.
PRODUCT_ID = 'YOUR_PRODUCT_ID'
TRUSTED_KEYS = {'YOUR_KEY_ID': 'YOUR_PUBLIC_KEY'}
# END LICENTIVO PRODUCT
def export_report(path):
# Replace this write with your existing, non-metered export operation.
Path(path).write_text('A report generated by the licensed application.\n', encoding='utf-8')
def main():
# In a GUI, read the activation input; later starts pass an empty key.
with Client.open_product(
PRODUCT_ID, TRUSTED_KEYS,
os.getenv('LICENTIVO_LICENSE_KEY', ''),
on_error=lambda error: print(f'Background verification: {error}', file=sys.stderr),
) as client:
feature = os.getenv('LICENTIVO_FEATURE', 'export')
path = os.getenv('LICENTIVO_OUTPUT', 'licensed-report.txt')
action = lambda: export_report(path)
if os.getenv('LICENTIVO_METERED') == '1':
client.run_metered_feature(feature, 1, os.getenv('LICENTIVO_OPERATION_ID', ''), action)
else:
client.run_feature(feature, action)
print(f'License OK: {feature} is available\nExport completed: {path}')
# Keep this context open until your real app exits. No Deactivate on normal exit.
if __name__ == '__main__':
try:
main()
except Exception as error:
print(str(error), file=sys.stderr)
sys.exit(2)
$env:LICENTIVO_LICENSE_KEY = 'YOUR_TEST_LICENSE_KEY'
./.venv/Scripts/python.exe app.py
# On later starts, restore the saved device credential:
Remove-Item Env:LICENTIVO_LICENSE_KEY
./.venv/Scripts/python.exe app.pyexport LICENTIVO_LICENSE_KEY='YOUR_TEST_LICENSE_KEY'
./.venv/bin/python app.py
# On later starts, restore the saved device credential:
unset LICENTIVO_LICENSE_KEY
./.venv/bin/python app.py4. डेस्कटॉप ऐप में क्लाइंट जीवित रखें
कमांड-लाइन निर्यात में with ब्लॉक पूरा ऑपरेशन घेर सकता है। डेस्कटॉप ऐप में सक्रियण के दौरान क्लाइंट खोलकर विंडो बंद होने तक रखें। हर बटन क्लिक पर नया क्लाइंट खोलकर बंद न करें।
ऑनलाइन सक्रियण और अन्य नेटवर्क कार्य GUI थ्रेड के बाहर चलाएँ, फिर परिणाम अपडेट करने के लिए UI थ्रेड पर लौटें। Tkinter डेस्कटॉप उदाहरण नीचे दिए दस्तावेज़ लिंक से अलग से उपलब्ध है; pip पैकेज इंस्टॉल करने पर इसका सोर्स कोड इंस्टॉल नहीं होता।
हर निर्यात बटन, शॉर्टकट या कमांड में client.run_feature("export", lambda: export_report(path)) बुलाएँ। बंद होने पर close बुलाएँ; यह डिवाइस पंजीकरण रखता है और फ़्लोटिंग सीट लौटाने की कोशिश करता है।
बाद की शुरुआत में वही उत्पाद, उपयोगकर्ता और कैश पथ रखकर खाली लाइसेंस कुंजी दें। सहेजा डिवाइस क्रेडेंशियल बहाल होगा। ऑफ़लाइन स्टार्टअप के लिए मान्य हस्ताक्षरित अनुमति और नीति आवश्यक हैं; फ़्लोटिंग और केवल ऑनलाइन स्टार्टअप को सर्वर पुष्टि चाहिए।
5. अनुमति और अस्वीकृति के रास्ते जाँचें
- अपनी परीक्षण कुंजी से सक्रिय करें और बनी रिपोर्ट जाँचें।
- LICENTIVO_LICENSE_KEY हटाएँ और उसी वर्चुअल एनवायरनमेंट व OS उपयोगकर्ता से शुरू करें। सहेजे क्रेडेंशियल बहाल होने चाहिए।
- LICENTIVO_FEATURE में अनुपस्थित फ़ीचर और LICENTIVO_OUTPUT में नया फ़ाइल नाम दें। गैर-शून्य निकास कोड मिले और नया निर्यात न बने।
- गणना सक्षम करने से पहले उपयोग नियम सेट करें। LICENTIVO_METERED=1 और स्थायी कार्य का LICENTIVO_OPERATION_ID दें। सफल काम पर काउंटर केवल एक बार घटे।
स्थापना और अनुमति की समस्याएँ
उत्पाद ID, हर कुंजी ID/सार्वजनिक कुंजी जोड़ी और ग्राहक लाइसेंस जाँचें। सार्वजनिक कुंजियाँ उत्पाद की हैं; लाइसेंस और डिवाइस प्रमाण अलग हैं। परीक्षण कुंजियाँ या प्रबंधन API Key वितरित न करें।
ModuleNotFoundError आमतौर पर बताता है कि pip और ऐप अलग Python इंटरप्रेटर चला रहे हैं। दोनों कमांड में एक ही वर्चुअल एनवायरनमेंट executable दें।
समाप्त लाइसेंस या अस्वीकृत फ़ीचर पर ऑपरेशन रोकें। उपलब्ध होने पर SDK त्रुटि और request ID दिखाएँ। असफल जाँच के बाद निर्यात कॉलबैक न चलाएँ।
गणना वाले ऑपरेशन को नेटवर्क चाहिए। स्थिर task ID और स्थायी परिणाम रखें ताकि लंबित पुष्टि काम दोहराए बिना बहाल हो। कैश अनुमति, डिवाइस क्रेडेंशियल, परीक्षण कुंजियाँ या विक्रेता की प्रबंधन कुंजियाँ वितरित न करें।