আমি কীভাবে পাইথন প্রোগ্রাম বিতরণ করতে পারি?


102

আমার অ্যাপ্লিকেশনটি দেখতে এমন দেখাচ্ছে:

main.py
উইন্ডোজ /
    __init__.py
    mainwindow.py
    ...
মডেল/
    __init__.py
    অর্ডার.পি
    ...
সংস্থান /
    image1.png
    logo.jpg
    ...

প্রোগ্রামটি মূল.পি. দিয়ে শুরু হয়েছে। এটির বাইরে 'চূড়ান্ত' অ্যাপ্লিকেশন তৈরি করার কোনও ভাল উপায় আছে কি? আমি পাইপেক্স / পাইপ্যাপের মতো কিছু ভাবছি, তবে পাইথন ইন্টারপ্রেটার / মডিউলগুলি অনুলিপি না করে অ্যাপ্লিকেশনটিতে যেখানে একজনের কেবলমাত্র কার্যকর করা যায়।

আমার কাছে ডিসটুইটালগুলির দিকে নজর ছিল, তবে এটি দেখতে পাইথন ডিরেক্টরিতে এটি কোনও প্রোগ্রাম ইনস্টল করে যা নন-লিনাক্স প্ল্যাটফর্মে স্বাভাবিক নয়।

এই মুহুর্তে আমি কেবলমাত্র টার্গেট মেশিনে পুরো উত্স ফোল্ডারটি অনুলিপি করেছি এবং main.pywউইন্ডোতে একটি উপকরণ তৈরি করব । কিছু অসুবিধা:

  • আইকনটি ডিফল্ট অজগর আইকন।
  • আমাকে নিজেই ওরফে তৈরি করতে হবে।
  • আমার উত্স ডিরেক্টরিতে উত্স নিয়ন্ত্রণ ফোল্ডারের মতো অতিরিক্ত অনেকগুলি ফাইল রয়েছে additional
  • আমাকে ম্যানুয়ালি নামকরণ main.pyকরতে হবে main.pyw
  • টার্গেট মেশিনে কেবল py .PoO * ফাইলগুলি থাকলে এটি দুর্দান্ত হবে। এর কোন আসল কারণ নেই, আমি কেবল অপ্রয়োজনীয় ফাইল থাকা পছন্দ করি না।

কেউ কীভাবে একটি দুর্দান্ত স্বয়ংক্রিয় বিতরণ তৈরি করতে পারে?

  • উইন্ডোজ জন্য? (এই মুহূর্তে আমার একমাত্র প্ল্যাটফর্ম সমর্থন করতে হবে))
  • ম্যাকের জন্য?
  • লিনাক্সের জন্য?

4
"আমার কাছে ডিস্টিওলেটগুলিতে নজর ছিল তবে এটি পাইথন ডিরেক্টরিতে কোনও প্রোগ্রাম ইনস্টল করে যা দেখে মনে হচ্ছে এটি নন-লিনাক্স প্ল্যাটফর্মে স্বাভাবিক নয়" "আপনি কেন বলছেন? আপনি কোন পাঠটি পড়েছিলেন তা বলেছিলেন? এটি অবশ্যই অসত্য, আপনি কোথায় এই ধারণাটি পেয়েছিলেন?
এস .লট


উত্তর:


37

পাইথন অ্যাপ্লিকেশন বিতরণ করার সাধারণ উপায়টি হ'ল ডিস্টিওলেটগুলি । এটি লাইব্রেরির ধরণের পাইথন মডিউল এবং পাইথন অ্যাপ্লিকেশন বিতরণের জন্য উভয়ই তৈরি করা হয়েছে, যদিও আমি জানিনা এটি উইন্ডোজে কীভাবে কাজ করে। আপনি উইন্ডোজে যে কোনও ক্ষেত্রে ডিস্টুয়েলস ব্যবহার করলে আলাদাভাবে পাইথন ইনস্টল করতে হবে।

আমি সম্ভবত আপনাকে সুপারিশ করব যে আপনি এটি লিনাক্স এবং পাই 2 এক্সে বা উইন্ডোজের জন্য অনুরূপ কিছু দিয়ে বিতরণ করুন। ওএস একাদশের জন্য জানেন না। যদি এটি কোনও শেষ ব্যবহারকারী অ্যাপ্লিকেশন হয় তবে আপনি সম্ভবত কোনও ডিস্ক চিত্রের ধরণের জিনিস চাইবেন, আমি কীভাবে এটি করব তা জানি না। তবে এর ব্যবহারকারীর অভিজ্ঞতা সম্পর্কে আরও তথ্যের জন্য এই পোস্টটি পড়ুন । প্রোগ্রামারদের জন্য তৈরি একটি অ্যাপ্লিকেশনের জন্য আপনি ওএস এক্সে একটি ডিস্টিল্ট টাইপ ইনস্টল করেও ঠিক আছেন।


4
ম্যাক এবং লিনাক্স এই মুহুর্তে তেমন গুরুত্বপূর্ণ নয়। পাই 2 অ্যাপ। অ্যাপ বান্ডিলগুলি তৈরি করে। এবং আমি মনে করি .dmg এ শিপিং ম্যাক অ্যাপ্লিকেশনগুলি পুরানো, কোনও একটি .zip ব্যবহার করা উচিত। কেবলমাত্র একটি ডিরেক্টরি তৈরি করতে distএবং এতে সমস্ত প্রাসঙ্গিক ফাইল অনুলিপি করতে ডিস্টিলগুলি ব্যবহার করা সম্ভব ?
জর্জি স্কলি

4
@gs: sdist কমান্ড সমস্ত উত্স ফাইলের একটি টার ফাইল তৈরি করবে।
মার্টিন বনাম লুইস

5
@gs: .dmg এ শিপিং ম্যাক অ্যাপ্লিকেশনগুলি আসলে অত্যন্ত সাধারণ। .dmg গুলি হ'ল ডিস্ক চিত্র, এবং অ্যাপ্লিকেশনগুলির জন্য বিন্যাস নয় (এটি অ্যাপ্লিকেশন হবে)। সুতরাং, আপনি প্রায়শই কিছু README ফাইল সহ একটি .dmg এর ভিতরে একটি একক। অ্যাপ খুঁজে পান।
এরিক ও লেবিগোট

4
@gs আমি জানি না আপনি কেন ডিস্ট্রুটিসগুলি কেবল একটি ডিরেক্টরিকে বিকৃত করতে এবং সেখানে ফাইলগুলি অনুলিপি করতে চান, আপনি নিজে এটি করতে পারেন। উইন্ডোজ ইনস্টলার তৈরি করা এবং পাইথন ২.6 থেকে স্টার্ট-মেনুতে লিংক তৈরি করা সহ ডিস্ট্রিটিলগুলি অনেক কিছু করে। যদিও আপনাকে পৃথক পৃথকভাবে পাইথন ইনস্টল করতে হবে, সুতরাং শেষ-ব্যবহারকারী অ্যাপ্লিকেশনটির জন্য, আমি পাইপেক্সেক্সকে আরও ভাল সমাধান বলে মনে করি, কারণ এতে এটির নিজস্ব পাইথন রয়েছে। ওএস এক্সের জন্য শিপিং / ইনস্টলারগুলি তার ব্লগপোস্টে আলেকজান্ডার লিমি বিশদভাবে আলোচনা করেছেন, তাই আমি তার পিছনে পিছিয়ে যাই।
লেনার্ট রেজেব্রো


61

আমি পাইিনস্টলারকে উচ্চতর প্রস্তাব দিচ্ছি , যা সমস্ত বড় প্ল্যাটফর্মগুলিকে সম্পূর্ণ নির্বিঘ্নে সমর্থন করে। পাইপেক্স এবং পাইপ্যাপের মতো এটি উইন্ডোজে একটি কার্যকর এক্সিকিউটেবল এবং ওএস এক্স-এ একটি অ্যাপ্লিকেশন বান্ডেল তৈরি করে, তবে সাধারণ নির্ভরতাগুলি সমাধান করে এবং অতিরিক্ত কনফিগারেশন টুইট ছাড়াই এগুলি অন্তর্ভুক্ত করার একটি দুর্দান্ত কাজ করার সুবিধা রয়েছে।

এছাড়াও মনে রাখবেন যে আপনি যদি উইন্ডোজটিতে পাইথন ২.6 স্থাপন করছেন তবে আপনার এই প্যাচটি পাইনস্টলারের ট্রাঙ্কে প্রয়োগ করা উচিত ।

আপনি ইঙ্গিত করেছেন যে আপনার কোনও ইনস্টলারের প্রয়োজন নেই তবে উইন্ডোজ প্ল্যাটফর্মের জন্য ইনো সেটআপটি ব্যবহার করা সহজ এবং দ্রুত সেটআপ পছন্দ।


4
আমি নিশ্চিত না যে এটি ওভারকিল। পাইনস্টলারের সাথে একটি অ্যাপ বান্ডিল করা অন্যান্য পদ্ধতির তুলনায় আসলে সহজতর হতে পারে, বিশেষত সি এক্সটেনশনের উপর নির্ভরশীলতা ... বেশিরভাগ ক্ষেত্রে ওয়ান লাইন কমান্ড-লাইন কল হিসাবে সহজ। পাইথন + নির্ভরতা + অ্যাপ্লিকেশনটি নিজেই ইনস্টল করা (ডিস্টুলেটগুলি ইত্যাদির মাধ্যমে বা কেবল একটি জিপ ফাইলের মাধ্যমেই করা) আরও জড়িত, বিশেষত যদি বিকাশকারী নিজেই লক্ষ্য মেশিনটি নিজে কনফিগার করতে সক্ষম না হন এবং ক্লায়েন্টকে নির্দেশাবলী সরবরাহ করার প্রয়োজন হয়। কমপক্ষে উইন্ডোজে, আমি মনে করি যে বিতরণের স্টাইলটি বোধগম্য।
ড্যানিয়েল নাব

4
পাইনস্টলারের সাথে কিছুটা অসুবিধে হয় যখন আপনি পাইনস্টলারের সাহায্যে তৈরি করা এক্সিকিউটেবল ব্যবহার করেন, মৃত্যুদন্ড কার্যকর করতে কয়েক সেকেন্ড সময় লাগে।
জুয়ানপাবলো

4
ঠিক আমি খুঁজছেন ছিল কি. আমাকে কখনও কখনও আমার স্ক্রিপ্টগুলি এমন কম্পিউটারে চালিত হওয়া উচিত যেখানে আমি কিছু ইনস্টল করতে পারি না। বাহ্যিক নির্ভরতা ছাড়াই একটি এক্সিকিউটেবল আমার প্রয়োজন I আমি স্টার্টআপের জন্য কয়েক সেকেন্ড ছাড়তে পারি। ধন্যবাদ!
কোডমনকি

ছোট অ্যাপ্লিকেশনগুলির জন্য প্রস্তাবিত নয়, যেহেতু একটি সাধারণ Hello worldপ্রোগ্রামে 500 এমবি স্থান এবং 3-5 সেকেন্ডের সূচনাকালীন সময় লাগে।
রাফ

আপনার অ্যাপ্লিকেশন বিতরণ করার জন্য পৃথক পরিবেশ ব্যবহার করে আপনি এই পরিমাণ স্থানটি এড়াতে পারবেন (উদাহরণস্বরূপ ভেন্ট বা পাইএনভ ব্যবহার করে)
আলেকজান্ডার

4

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

PS : প্রতিটি মেশিনে পাইথন ইন্টারপ্রেটার থাকা দরকার যা স্কিজে.পি দ্বারা উত্পাদিত বাইটকোডের সাথে সামঞ্জস্যপূর্ণ। পাইথনের বিভিন্ন সংস্করণের জন্য আপনি বিভিন্ন বাইকোড সংস্করণ তৈরি করতে পারেন, প্রয়োজন হলে (পাইথনের ডান সংস্করণ দিয়ে স্কেজেজ.পি চালান)।


4

আমি মনে করি এটি পেক্সেরও উল্লেখ করার মতো (এই প্রশ্নটি যতটা বেশি মনোযোগ পেয়েছে এবং সেই প্রশ্নটি নিজের চেয়ে কম বিবেচনায় নিয়েছে)। নিজস্ব বিবরণ অনুসারে :

পেক্স ফাইলগুলি স্বয়ংসম্পূর্ণ এক্সিকিউটেবল পাইথন ভার্চুয়াল পরিবেশ are আরও সুনির্দিষ্টভাবে, তারা সাবধানে একটি #!/usr/bin/env pythonএবং বিশেষের সাথে জিপ ফাইলগুলি তৈরি করে যা __main__.pyআপনাকে পেক্স রানটাইমটির সাথে ইন্টারঅ্যাক্ট করতে দেয়। জিপ অ্যাপ্লিকেশনগুলি সম্পর্কে আরও তথ্যের জন্য, পিইপি 441 দেখুন

পাইথনের জন্য প্যাকেজিংয়ের একটি সংক্ষিপ্ত বিবরণ পড়লে আমি তাতে হোঁচট খেয়েছি । তারা সেখানে এই সুন্দর ছবি পোস্ট করেছেন: এখানে চিত্র বর্ণনা লিখুন

সংক্ষিপ্তসার হিসাবে: আপনি যদি টার্গেট মেশিনে অজগর ইনস্টল করার উপর নির্ভর করতে পারেন তবে পেক্স ব্যবহার করুন একটি স্ব-সংযুক্ত containing এক্সিকিউটেবল produce উত্পাদন করতে যা সম্ভবত পাইআইনস্টলারের উত্পাদিত এক্সিকিউটেবলের চেয়ে ছোট ফাইলের আকার ধারণ করবে।


2

আমার ভুল হতে পারে, তবে আইরনপাইথনের উইন্ডোজের জন্য সংকলক অন্তর্নির্মিত নেই?

http://www.ironpython.net

[সম্পাদনা]

Cx_Freeze ব্যবহার করে দেখুন, এখন পর্যন্ত সেরা .py থেকে .exe (আরও কয়েকটি .dlls) সংকলকটি আমি ব্যবহার করেছি।

http://cx-freeze.sourceforge.net/


1

আপনি যদি উইন্ডোগুলিতে বিতরণ করছেন তবে যা প্রয়োজন তা সম্পর্কিত সমস্ত ফাইল / ইন্টারপেটর ইনস্টল করতে ইনস্টলার ব্যবহার করুন । একটি setup.exe বিতরণ করুন। এটি উইন্ডোতে সেরা উপায়। অন্যথায় ব্যবহারকারীরা অভিযোগ করবেন।


4
আমার কোনও ইনস্টলার লাগবে না কারণ কেবলমাত্র একজন ব্যবহারকারী আছেন যাঁরা প্রোগ্রামটি ব্যবহার করতে চলেছেন। তবে অবশ্যই বেশি ব্যবহারকারীর জন্য একটি প্রোগ্রাম লেখার সময় যা উইন্ডোতে থাকা আবশ্যক।
জর্জি স্কলি

4
@gs: ওহ, কেবলমাত্র একজন ব্যবহারকারী। ভাল, তারপরে আমি একটি বেসিক ডিস্টিওলেটস প্যাকেজ তৈরির পরামর্শ দেব, হয় উত্স বিতরণ বা উইন্ডোজ বাইনারি ইনস্টলার। এটি অবশ্যই একটি পাইথন মডিউল বিতরণের সহজ ও সুন্দর উপায়।
লেনার্ট রেজেব্রো

0

পাইথন ডেস্কটপ অ্যাপ্লিকেশন বিতরণের সবচেয়ে সুবিধাজনক * ক্রস প্ল্যাটফর্মের উপায় হ'ল ক্রস প্ল্যাটফর্ম কনডা প্যাকেজ ম্যানেজারের উপর নির্ভর করা। এটি বেশ কয়েকটি সরঞ্জাম ব্যবহার করে:

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

* বিকাশকারীদের জন্য সবচেয়ে সুবিধাজনক। শেষ ব্যবহারকারীর জন্য যথেষ্ট সুবিধাজনক।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.