python setup.py install
পিপিআই প্যাকেজ সম্পাদন করার সময় কি কেউ এই সতর্কতার মুখোমুখি হয় ?
install_requires
প্যাকেজটির প্রয়োজনীয়তা নির্ধারণ করে। প্রচুর পাইপিআই প্যাকেজগুলির এই বিকল্প রয়েছে। এটি কীভাবে "অজানা বিতরণ বিকল্প" হতে পারে?
python setup.py install
পিপিআই প্যাকেজ সম্পাদন করার সময় কি কেউ এই সতর্কতার মুখোমুখি হয় ?
install_requires
প্যাকেজটির প্রয়োজনীয়তা নির্ধারণ করে। প্রচুর পাইপিআই প্যাকেজগুলির এই বিকল্প রয়েছে। এটি কীভাবে "অজানা বিতরণ বিকল্প" হতে পারে?
উত্তর:
python setup.py
ডিস্টুটিলেটগুলি ব্যবহার করে যা ইনস্টল_রেকায়ারগুলি সমর্থন করে না। সেটআপলুলগুলি বিতরণ করে (এর উত্তরসূরি) এবং পাইপ (যা উভয়ই ব্যবহার করে) করে। তবে আপনাকে আসলে এগুলি ব্যবহার করতে হবে। অর্থাৎ easy_install
কমান্ডের মাধ্যমে সেটআপলগুলিতে কল করুন বা pip install
।
অন্য উপায়টি হ'ল আপনার সেটআপ.পাইতে সেটআপলগুলি থেকে সেটআপ আমদানি করা, তবে এটি মানক নয় এবং আপনার প্যাকেজটি ব্যবহার করতে ইচ্ছুক প্রত্যেককে সেটআপলগুলি ইনস্টল করতে হবে।
pip
, তবে আমি setup.py
যদি কেবলমাত্র জায়গায় জায়গায় এক্সটেনশন তৈরি করতে চাই তবে ফাইলটি কীভাবে চালাব ?
python setup.py sdist
এটি চালিয়ে ইনস্টল করতে পারেন pip install resulting_package.tar.gz
। আপনি pip install -e
উত্স থেকে সরাসরি ইনস্টল করতেও ব্যবহার করতে পারেন, তবে আমি সর্বদা প্যাকেজ থেকে বা সরাসরি সংগ্রহস্থল থেকে ইনস্টল করতে পছন্দ করতাম ..
pip install pendulum==1.4.4
। রানিং pip install setuptools --upgrade
ত্রুটিটি সাফ করেছে।
এটি আমার গুগল অনুসন্ধানে প্রথম ফলাফল, তবে এর কোনও উত্তর ছিল না। আমি দেখেছি আপগ্রেড সেটআপলগুলি আমার জন্য সমস্যাটি সমাধান করেছে (এবং ভাল পরিমাপের জন্য পাইপ)
pip install --upgrade pip
pip install --upgrade setuptools
আশা করি এটি পরবর্তী ব্যক্তিকে এই লিঙ্কটি সন্ধান করতে সহায়তা করবে!
pip3 install neovim-remote
।)
মনোযোগ ! মনোযোগ ! সামনে অসম্পূর্ণ উত্তর। পাইথন মহাবিশ্বের প্যাকেজিংয়ের অবস্থার উপর "সর্বশেষতম মেমো" পেতে, এই মোটামুটি বিস্তারিত নিবন্ধটি পড়ুন ।
জবাবদিহি তৈরি / ইনস্টল করার চেষ্টা করার সময় আমি এই সমস্যার মধ্যে পড়েছি। সমস্যাটি মনে হচ্ছে ডিস্টিলগুলি প্রকৃতপক্ষে ইনস্টল_আরকিয়ারগুলিকে সমর্থন করে না । সেটআপলগুলিতে ফ্লাইটে বানর-প্যাচ ডিস্টিওলেটগুলি হওয়া উচিত , তবে এটি সম্ভবত তা নয়, কারণ সেটআপটুলগুলির শেষ প্রকাশটি ২০০৯ সাল থেকে ০..6 সি 11 হয়, তবে ডিস্টুটিসগুলি একটি মূল পাইথন প্রকল্প।
সুতরাং ম্যানুয়ালি সেটআপটিউলস -0.6c11-py2.7.egg ইনস্টল করার পরেও setup.py চলমান ডিস্টিওলেটগুলি ডি.পি.ই বাছাই করে, এবং সাইট-প্যাকেজ / সেটআপটুলস / থেকে পাওয়া যায় না।
ব্যবহার করার এছাড়াও setuptools ডকুমেন্টেশন নির্দেশ ez_setup এবং distutils।
যাইহোক, সেটআপলগুলি আজকাল বিতরণ করে নিজেই সরবরাহ করা হয়, এবং সেটআপের সেই স্বাদটি () ইনস্টল_রিক্যুয়্যার সমর্থন করে।
setuptools
এবং distribute
প্রকল্পগুলি আবার একত্রিত হওয়ার প্রক্রিয়াধীন রয়েছে, তবে একীকরণ এখনও সম্পূর্ণ হয়নি (আমি এই নিবন্ধটি যত তাড়াতাড়ি তা আপডেট করব) যে পরিবর্তন হয়) "। কেউ কি জানেন যে ২০১২ সাল অবধি জিনিসের অবস্থা কী? পাইথন ২.7 এর জীবনের শেষ তারিখটি দ্রুত এগিয়ে আসার সাথে সাথে প্রচুর পাইথন প্যাকেজ আপডেট এবং পুনঃ-প্যাকেজিং প্রক্রিয়াধীন থাকবে।
আমি পাইথন ২.7.১১ এর সাথে ম্যাকে আছি। আমি অত্যন্ত সহজ এবং সোজা প্রজেক্ট তৈরির সাথে জড়িত হয়েছি, যেখানে আমার একমাত্র প্রয়োজন হ'ল আমি চালাতে পারি python setup.py install
, এবং setup.py
সেটআপ কমান্ডটি ব্যবহার করতে পারি, আদর্শভাবে ডিস্টুয়েলস থেকে। আক্ষরিক অর্থে setup()
আমার এখানে যে নোটগুলি আছে তা বাদ দিয়ে কাওয়ার্গস থেকে অন্য কোনও আমদানি বা কোড নেই।
আমার setup.py
ফাইলটির জন্য আমদানি করার সময় আমি ত্রুটিটি পেয়েছি :
from distutils.core import setup
আমি যখন এটি ব্যবহার করি, তখন আমি সতর্কতাগুলি পাই
/usr/local/Cellar/python/2.7.11/ ফ্রেমওয়ার্কস / পাইথন.ফ্রেমওয়ার্ক / সংস্করণ / 2.7/lib/python2.7/distutils/dist.pyferences67: ব্যবহারকারী সতর্কতা: অজানা বিতরণ বিকল্প: 'এন্ট্রি_পয়েন্টস' সতর্কতা বার্তা)
আমি যদি আমদানিগুলি (এবং অন্য কিছুই না ) নীচে পরিবর্তন করি :
from distutils.core import setup
import setuptools # noqa
সতর্কবাণীগুলি চলে যায়।
মনে রাখবেন যে আমি ব্যবহার করছি না setuptools
, কেবল এটি আমদানি করলে আচরণটি এমনভাবে পরিবর্তিত হয় যে এটি আর সতর্কতা প্রকাশ করে না। আমার জন্য, এটি সত্যই বিস্মিত হওয়ার পার্থক্যের কারণ যেখানে আমি ব্যবহার করছি এমন কিছু প্রকল্প সেই সতর্কতাগুলি দেয়, এবং কিছু অন্যরা তা দেয় না।
স্পষ্টতই, বানর-প্যাচিংয়ের কিছু ফর্ম চলছে এবং তা আমদানি করা হয়েছে কিনা তা দ্বারা প্রভাবিত হয়। এই সমস্যাটি নিয়ে গবেষণা করা প্রত্যেকের পক্ষে এটি সম্ভবত পরিস্থিতি নয় তবে আমি যে সংকীর্ণ পরিবেশে কাজ করছি তার জন্য এটিই আমি উত্তর খুঁজছিলাম।
এটি অন্যান্য (সম্প্রদায়ের) মন্তব্যের সাথে সামঞ্জস্যপূর্ণ, যা বলে যে ডিস্টুটিসগুলিকে মেনকিপ্যাচ সেটআপ করা উচিত এবং আনসিবল ইনস্টল করার সময় তাদের সমস্যা ছিল। উত্তরদাতারা অতীতে সেটআপটুল না রেখে ইনস্টল করার অনুমতি দেওয়ার চেষ্টা করেছিল এবং তারপরে আবার ফিরে গেছে went
https://github.com/ansible/ansible/blob/devel/setup.py
প্রচুর জিনিস বাতাসে রয়েছে ... তবে আপনি যদি কোনও সাধারণ প্রকল্পের জন্য একটি সহজ উত্তর খুঁজছেন তবে আপনার সম্ভবত সেটআপটুলগুলি আমদানি করা উচিত।
import setuptools
করা অলৌকিকভাবে আমার জন্য উবুন্টু ১.0.০৪ তে অজগর 3.5 নিয়ে সমস্যাটি সমাধান করেছে।
এটি ডিস্টুটিস থেকে একটি সতর্কতা, এবং এটি এমন একটি চিহ্ন যা আপনার কাছে সেটআপলগুলি ইনস্টল করা নেই। এটি http://pypi.python.org/pypi/setuptools থেকে ইনস্টল করা সতর্কতা সরিয়ে দেবে।
sudo apt-get install python-dev # for python2.x installs
sudo apt-get install python3-dev # for python3.x installs
এটি কোনও অনুপস্থিত শিরোনাম ইনস্টল করবে। এটি আমার সমস্যা সমাধান করেছে
উপসংহারে :
distutils
সমর্থন করে না install_requires
বা করে entry_points
, setuptools
করে না।
পরিবর্তন from distutils.core import setup
মধ্যে setup.py করতে from setuptools import setup
বা refactor আপনার setup.py শুধুমাত্র ব্যবহার করতে distutils
বৈশিষ্ট্যগুলিও উপস্থিত রয়েছে।
আমি এখানে এসেছি কারণ আমি বুঝতে পারি নি যে entry_points
এটি কেবল একটি setuptools
বৈশিষ্ট্য।
আপনি যদি এখানে থাকেন তবে আমাকে পছন্দ setuptools
করতে distutils
চান:
install_requires
থেকে অপসারণ করুন এবং এর সাথে প্রয়োজনীয়তা. টেক্সট ব্যবহার করুনpip
entry_points
করার জন্য scripts
( ডক ) এবং refactor কোনো ওপর নির্ভর মডিউল entry_points
shebangs এবং একটি এন্ট্রি পয়েন্ট সঙ্গে পূর্ণ স্ক্রিপ্ট যাবে।আমি যতদূর বলতে পারি, এটি সেটআপলগুলিতে একটি বাগ যা স্ট্যান্ডার্ড লাইব্রেরিতে বেস শ্রেণিতে কল করার আগে সেটআপটোলগুলি নির্দিষ্ট বিকল্পগুলি সরিয়ে দেয় না: https://bitbucket.org/pypa/setuptools/issue/29 / এড়ানোর-userwarnings-নির্গত-হোয়েন-কলিং
আপনি একটি নিঃশর্ত যদি import setuptools
আপনার setup.py
(যেমন আপনি উচিত setuptools নির্দিষ্ট বিকল্পগুলি ব্যবহার করে থাকেন), তারপর আসলে স্ক্রিপ্ট ব্যর্থ হয় না ImportError
ইঙ্গিত করে যে setuptools সঠিকভাবে ইনস্টল করা আছে।
আপনি নিম্নলিখিত হিসাবে সতর্কতা নিরব করতে পারেন:
python -W ignore::UserWarning:distutils.dist setup.py <any-other-args>
কেবলমাত্র যদি আপনি নিঃশর্ত আমদানি ব্যবহার করেন যা সেটআপলগুলি ইনস্টল না করা থাকলে সম্পূর্ণ ব্যর্থ হবে :)
(মার্জার-পরবর্তী সেটআপললস রেপো থেকে একটি চেকআউটে আমি একই আচরণটি দেখছি, যার কারণেই আমি নিশ্চিত যে এটি একটি সিস্টেম কনফিগার সমস্যার চেয়ে সেটআপ টলগুলি বাগ আছে I আমি আশা করি প্রাক-মার্জ বিতরণেও একই সমস্যা হবে)
পাইথন ২..7 ব্যবহার করে আমি এখন এটি উত্তরাধিকার সরঞ্জামগুলিতে দেখেছি, যেখানে বিল্ড (ডকফাইফাইলের মতো) একটি আনপিনড নির্ভরতা ইনস্টল করে, উদাহরণস্বরূপ পাইস্টেস্ট। পাইটেষ্ট পাইথন ২.7 সমর্থন বাদ দিয়েছে, সুতরাং আপনাকে <নতুন প্যাকেজ রিলিজ সংস্করণ নির্দিষ্ট করতে হতে পারে।
বা বুলেটটি কামড়ান এবং যদি এটি সক্ষম হয় তবে অ্যাপটিকে পাইথন 3 এ রূপান্তর করুন।