python - Setup.py কি?




python-3.x pypi (7)

setup.py দুটি পরিস্থিতিতে ব্যবহার করা যেতে পারে, প্রথমে, আপনি একটি পাইথন প্যাকেজ ইনস্টল করতে চান। দ্বিতীয়, আপনি আপনার নিজস্ব পাইথন প্যাকেজ তৈরি করতে চান। সাধারণত স্ট্যান্ডার্ড পাইথন প্যাকেজটিতে setup.py, setup.cfg এবং Manifest.in মতো কয়েকটি গুরুত্বপূর্ণ ফাইল রয়েছে। যখন আপনি পাইথন প্যাকেজ তৈরি করছেন, তখন এই তিনটি ফাইলগুলি (ডিম-তথ্য ফোল্ডারের অধীনে PKG-INFO এর বিষয়বস্তু) নাম, সংস্করণ, বর্ণনা, অন্যান্য প্রয়োজনীয় সংস্থানগুলি (সাধারণত .txt ফাইলে) এবং কয়েকটি অন্যান্য প্যারামিটার নির্ধারণ করবে। setup.cfg সেটআপ করা হয় যখন প্যাকেজ তৈরি করা হয় (tar.gz হতে পারে)। Manifest.in আপনি যেখানে আপনার প্যাকেজ অন্তর্ভুক্ত করা উচিত সংজ্ঞায়িত করতে পারেন। আপনি setup.py মত ব্যবহার করে স্টাফ গুচ্ছ করতে পারেন যাই হোক না কেন

python setup.py build
python setup.py install
python setup.py sdist <distname> upload [-r urltorepo]  (to upload package to pypi or local repo)

অন্যান্য কমান্ডের গুচ্ছ আছে যা setup.py এর সাথে ব্যবহার করা যেতে পারে। সাহায্যের জন্য

python setup.py --help-commands

https://code.i-harness.com

যে কেউ ব্যাখ্যা করতে পারেন, setup.py কি এবং এটি কনফিগার বা ব্যবহার করা যাবে কিভাবে?


আপনার ডাউনলোড করা একটি পাইথন প্যাকেজ ইনস্টল করার জন্য, আপনি সংরক্ষণাগারটি সরাতে এবং setup.py স্ক্রিপ্টটি ভিতরে চালান:

python setup.py install

আমার কাছে, এই সবসময় অদ্ভুত অনুভূত হয়েছে। ডাউনলোডের সময়ে প্যাকেজ ম্যানেজারকে নির্দেশ করা আরও স্বাভাবিক হবে, যেমন রুবি এবং নোডজেস, যেমন। gem install rails-4.1.1.gem

একটি প্যাকেজ ম্যানেজার খুব আরামদায়ক, কারণ এটি পরিচিত এবং নির্ভরযোগ্য। অন্যদিকে, প্রতিটি setup.py উপন্যাস, কারণ এটি প্যাকেজের জন্য নির্দিষ্ট। এটি কনভেনশনে বিশ্বাসের দাবি করে "আমি এই setup.py বিশ্বাস করি যে আমি অতীতে ব্যবহৃত অন্যগুলির মতো একই কমান্ডগুলি গ্রহণ করি"। যে মানসিক ইচ্ছাশক্তি উপর একটি regrettable ট্যাক্স।

আমি প্যাকেজ ম্যানেজারের চেয়ে setup.py ওয়ার্কফ্লো কম নিরাপদ বলে মনে করছি না (আমি বুঝি পাইপ ভিতরে কেবলমাত্র setup.py চালায়), তবে অবশ্যই আমি মনে করি এটি অদ্ভুত এবং জঘন্য। একই প্যাকেজ ম্যানেজার অ্যাপ্লিকেশন সব হচ্ছে কমান্ডের একটি সাদৃশ্য আছে। আপনি এমনকি এটা প্রেমিকা হত্তয়া হতে পারে।


এটি সহজ করতে, "__main__" ফাংশনগুলি কল করার সময় "__main__" হিসাবে চালানো হয় অন্য উত্তরগুলি উল্লেখ করা হয়েছে। Setup.py এর ভিতরে, আপনার প্যাকেজটি ইনস্টল করার জন্য আপনাকে প্রয়োজনীয় সবকিছু রাখতে হবে।

সাধারণ setup.py ফাংশন

নিম্নলিখিত দুটি বিভাগে দুটি জিনিস আলোচনা করা হয়েছে যা many setup.py মডিউল রয়েছে।

setuptools.setup

এই ফাংশনটি আপনাকে প্রকল্পটির নাম, প্রজেক্টের নাম, সংস্করণ ইত্যাদি উল্লেখ করতে দেয় .... সর্বাধিক গুরুত্বপূর্ণ, এই ফাংশনটি যদি সঠিকভাবে প্যাকেজ হয় তবে আপনাকে অন্যান্য ফাংশন ইনস্টল করতে দেয়। Setuptools.setup এর উদাহরণের জন্য এই ওয়েবপৃষ্ঠাটি দেখুন

Setuptools.setup এর এই বৈশিষ্ট্যগুলি এই ধরনের প্যাকেজগুলি ইনস্টল করতে সক্ষম করে:

  • আপনার প্রকল্পে আমদানি করা প্যাকেজগুলি এবং setuptools.findpackages ব্যবহার করে PyPI setuptools.findpackages :

    প্যাকেজ = find_packages (বাদ দিন = ["ডক্স", "পরীক্ষা", ".itignore", "README.rst", "বর্ণনা"।)

  • প্যাকেজগুলি PyPI , তবে dependency_links ব্যবহার করে একটি URL থেকে ডাউনলোড করা যেতে পারে

    dependency_links = [" http://peak.telecommunity.com/snapshots/ ",]

কাস্টম ফাংশন

আদর্শ বিশ্বের মধ্যে, setuptools.setup আপনার জন্য সবকিছু পরিচালনা করবে। দুর্ভাগ্যবশত এই ক্ষেত্রে সবসময় হয় না। কখনও কখনও আপনার নির্দিষ্ট প্যাকেজগুলির জন্য সঠিক অবস্থায় আপনি যে সিস্টেমটি ইনস্টল করছেন তা পেতে, subprocess কমান্ডের সাথে নির্ভরতা ইনস্টল করার মতো নির্দিষ্ট জিনিসগুলি করতে হবে। এই এড়াতে চেষ্টা করুন, এই ফাংশন বিভ্রান্তিকর পেতে এবং প্রায়ই OS এবং এমনকি distribution মধ্যে ভিন্ন।


যখন আপনি setup.py সাথে একটি প্যাকেজ ডাউনলোড করেন তখন আপনার টার্মিনাল (ম্যাক, লিনাক্স) বা কমান্ড প্রম্পট (উইন্ডোজ) খুলুন। cd ব্যবহার করে এবং Tab ট্যাবের সাহায্যে আপনাকে সহায়তা করে যেখানে আপনি ফাইলটি ডাউনলোড করেছেন সেই ফোল্ডারটিতে সঠিক পথ সেট করুন এবং যেখানে setup.py :

iMac:~ user $ cd path/pakagefolderwithsetupfile/

এন্টার টিপুন, আপনাকে এমন কিছু দেখতে হবে:

iMac:pakagefolderwithsetupfile user$

তারপর এই python setup.py install পরে টাইপ করুন:

iMac:pakagefolderwithsetupfile user$ python setup.py install

enter । সম্পন্ন!


setup.py একটি পাইথন ফাইল অন্য যেকোন মত। এটি কোনও নাম নিতে পারে, কনভেনশন ব্যতীত এটি setup.py করা হয় setup.py যাতে প্রতিটি স্ক্রিপ্টের সাথে কোনও ভিন্ন পদ্ধতি নেই।

পাইথন মডিউল ইনস্টল করার জন্য প্রায়শই setup.py ব্যবহৃত হয় তবে সার্ভার অন্যান্য উদ্দেশ্যে:

মডিউল:

সম্ভবত এটি setup.py সবচেয়ে বিখ্যাত ব্যবহার মডিউলগুলিতে রয়েছে। যদিও তারা pip ব্যবহার করে ইনস্টল করা যেতে পারে, পুরাতন পাইথন সংস্করণগুলি ডিফল্টরূপে pip অন্তর্ভুক্ত করে নি এবং তাদের আলাদাভাবে ইনস্টল করা প্রয়োজন।

যদি আপনি কোনও মডিউল ইনস্টল করতে চান তবে pip ইনস্টল করতে না চান তবে setup.py কেবলমাত্র বিকল্প বিকল্প সেটআপ ফাইল থেকে ইনস্টল করা ছিল। এটি python setup.py install যেতে পারে। এটি মূল অভিধানে পাইথন মডিউল ইনস্টল করবে ( pip ছাড়া, easy_install ect)।

pip ব্যর্থ হলে এই পদ্ধতি প্রায়ই ব্যবহার করা হয়। উদাহরণস্বরূপ, যদি পছন্দসই প্যাকেজের সঠিক পাইথন সংস্করণটি pip মাধ্যমে উপলব্ধ না হয় তবে এটি সম্ভবত রক্ষণাবেক্ষণ করা হয় না, কারণ সোর্স ডাউনলোড এবং চলমান python setup.py install একই জিনিস সম্পাদন করবে, সংকলিত বাইনারিগুলির ক্ষেত্রে প্রয়োজন নেই , (তবে পাইথন সংস্করণটি উপেক্ষা করবে - যদি না একটি ত্রুটি ফেরত দেওয়া হয়)।

setup.py অন্য একটি ব্যবহার উৎস থেকে প্যাকেজ ইনস্টল করা। যদি একটি মডিউল এখনও বিকাশের অধীনে থাকে তবে চাকা ফাইলগুলি উপলব্ধ হবে না এবং ইনস্টল করার একমাত্র উপায় সরাসরি উৎস থেকে ইনস্টল করা।

পাইথন এক্সটেনশান নির্মাণ:

একটি মডিউল তৈরি করা হয়েছে যখন এটি একটি distutils সেটআপ স্ক্রিপ্ট ব্যবহার করে বন্টনের জন্য মডিউল প্রস্তুত রূপান্তর করা যাবে। একবার নির্মিত উপরে এই কমান্ড ব্যবহার করে ইনস্টল করা যাবে।

একটি সেটআপ স্ক্রিপ্ট নির্মাণ করা সহজ এবং ফাইলটি সঠিকভাবে কনফিগার করা হয়ে গেলে এবং python setup.py build চালানোর মাধ্যমে সংকলিত করা যেতে পারে (সমস্ত কমান্ডের লিঙ্ক দেখুন)।

আবার ব্যবহারের জন্য এবং কনভেনশন অনুসারে এটি setup.py নামকরণ করা হয়েছে তবে কোনও নাম নিতে পারে।

Cython:

setup.py ফাইলগুলির আরেকটি বিখ্যাত ব্যবহার সংকলিত এক্সটেনশানগুলি অন্তর্ভুক্ত করে। এই ব্যবহারকারী নির্ধারিত মান সঙ্গে একটি সেটআপ স্ক্রিপ্ট প্রয়োজন। তারা দ্রুত অনুমতি দেয় (কিন্তু একবার সংকলিত হয় প্ল্যাটফর্ম নির্ভরশীল) মৃত্যুদন্ড কার্যকর। এখানে documentation থেকে একটি সহজ উদাহরণ:

from distutils.core import setup
from Cython.Build import cythonize

setup(
    name = 'Hello world app',
    ext_modules = cythonize("hello.pyx"),
)

এটি python setup.py build মাধ্যমে কম্পাইল করা যেতে পারে

Cx_Freeze:

একটি সেটআপ স্ক্রিপ্ট প্রয়োজন আরেকটি মডিউল cx_Freeze । এটি পাইথন স্ক্রিপ্টকে এক্সিকিউটেবলগুলিতে রূপান্তর করে। এটি বর্ণনা, নাম, আইকন, প্যাকেজগুলি অন্তর্ভুক্ত করার জন্য অনেকগুলি কমান্ডের অনুমতি দেয়, ect বাদ দিয়ে এবং একবার চালানো একটি বিতরণযোগ্য অ্যাপ্লিকেশন তৈরি করবে। documentation থেকে একটি উদাহরণ:

import sys
from cx_Freeze import setup, Executable
build_exe_options = {"packages": ["os"], "excludes": ["tkinter"]} 

base = None
if sys.platform == "win32":
    base = "Win32GUI"

setup(  name = "guifoo",
        version = "0.1",
        description = "My GUI application!",
        options = {"build_exe": build_exe_options},
        executables = [Executable("guifoo.py", base=base)])

এটি python setup.py build মাধ্যমে কম্পাইল করা যেতে পারে।

সুতরাং একটি setup.py ফাইল কি?

বেশ সহজভাবে এটি একটি স্ক্রিপ্ট যা পাইথন পরিবেশে কিছু তৈরি বা কনফিগার করে।

বিতরণ করার সময় একটি প্যাকেজ শুধুমাত্র একটি সেটআপ স্ক্রিপ্ট থাকা উচিত তবে এটি একক সেটআপ স্ক্রিপ্টে একত্রিত হওয়া অসাধারণ নয়। লক্ষ্য করুন এই প্রায়ই distutils জড়িত কিন্তু সবসময় না (হিসাবে আমি আমার শেষ উদাহরণ দেখানো)। এটি মনে রাখা জিনিসটি কিছু উপায়ে পাইথন প্যাকেজ / স্ক্রিপ্ট কনফিগার করে।

এটি নামটি নেয় তাই বিল্ডিং বা ইনস্টলেশনের সময় একই কমান্ড ব্যবহার করা যেতে পারে।


setup.py একটি পাইথন ফাইল, যা সাধারণত আপনাকে বলে যে আপনি যে মডিউল / প্যাকেজটি ইনস্টল করতে চলেছেন তা প্যাকেট এবং Distutils দিয়ে বিতরণ করা হয়েছে যা পাইথন মডিউলগুলি বিতরণ করার জন্য আদর্শ।

এটি আপনাকে পাইথন প্যাকেজগুলি সহজেই ইনস্টল করতে দেয়। প্রায়শই এটি লিখতে যথেষ্ট হয়:

$ python setup.py install

এবং মডিউল নিজেই ইনস্টল হবে।

https://docs.python.org/3/installing/index.html#installing-index


setup.py পাইথনের একটি মাল্টি-প্ল্যাটফর্ম ইনস্টলারের উত্তর এবং ফাইল তৈরি করে।

আপনি যদি কমান্ড লাইন ইনস্টলেশনের সাথে পরিচিত হন, তবে python setup.py build && python setup.py install অনুবাদগুলি python setup.py build && python setup.py install

কিছু প্যাকেজ বিশুদ্ধ পাইথন, এবং শুধুমাত্র বাইট কম্পাইল করা হয়। অন্যরা নেটিভ কোড ধারণ করতে পারে, যার জন্য একটি নেটিভ কম্পাইলার (যেমন gcc বা cl ) এবং পাইথন ইন্টারফেসিং মডিউল ( swig বা pyrex ) প্রয়োজন হবে।





python-packaging