পিপিআই ইউজার সতর্কতা: অজানা বিতরণ বিকল্প: 'ইনস্টল_আরকিয়ারস'


112

python setup.py installপিপিআই প্যাকেজ সম্পাদন করার সময় কি কেউ এই সতর্কতার মুখোমুখি হয় ?

install_requiresপ্যাকেজটির প্রয়োজনীয়তা নির্ধারণ করে। প্রচুর পাইপিআই প্যাকেজগুলির এই বিকল্প রয়েছে। এটি কীভাবে "অজানা বিতরণ বিকল্প" হতে পারে?



@ ট্রিপলি সম্ভবত, তবে এই প্রশ্নটির চেয়ে আগে জিজ্ঞাসা করা হয়েছিল।
টাইলার লং

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

1
@ ট্রিপলি আপনি এই থ্রেডটি মনোযোগ সহকারে পড়লে আপনি বুঝতে পারবেন যে কোনও সঠিক উত্তর নেই। সুতরাং কোন উত্তর গ্রহণ করতে হবে তা আমি জানি না। আমি এমন কোনও উত্তর নির্বাচন করে লোককে বিভ্রান্ত করতে চাই না যা নিজেকে বোঝাতেও পারে না।
টাইলার দীর্ঘ

উত্তর:


89

python setup.pyডিস্টুটিলেটগুলি ব্যবহার করে যা ইনস্টল_রেকায়ারগুলি সমর্থন করে না। সেটআপলুলগুলি বিতরণ করে (এর উত্তরসূরি) এবং পাইপ (যা উভয়ই ব্যবহার করে) করে। তবে আপনাকে আসলে এগুলি ব্যবহার করতে হবে। অর্থাৎ easy_installকমান্ডের মাধ্যমে সেটআপলগুলিতে কল করুন বা pip install

অন্য উপায়টি হ'ল আপনার সেটআপ.পাইতে সেটআপলগুলি থেকে সেটআপ আমদানি করা, তবে এটি মানক নয় এবং আপনার প্যাকেজটি ব্যবহার করতে ইচ্ছুক প্রত্যেককে সেটআপলগুলি ইনস্টল করতে হবে।


3
বলুন আমি ব্যবহার করতে চাই pip, তবে আমি setup.pyযদি কেবলমাত্র জায়গায় জায়গায় এক্সটেনশন তৈরি করতে চাই তবে ফাইলটি কীভাবে চালাব ?
ফ্রেড ফু

11
সতর্কতা আপনাকে আপনার কোডটি প্যাকেজিং করতে বাধা দেয় না, তাই আপনি python setup.py sdistএটি চালিয়ে ইনস্টল করতে পারেন pip install resulting_package.tar.gz। আপনি pip install -eউত্স থেকে সরাসরি ইনস্টল করতেও ব্যবহার করতে পারেন, তবে আমি সর্বদা প্যাকেজ থেকে বা সরাসরি সংগ্রহস্থল থেকে ইনস্টল করতে পছন্দ করতাম ..
সেবাস্তিয়ান ব্লাস্ক

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

1
আমার উত্তর দেখুন - আমি যতদূর বলতে পারি এটি সেটআপলগুলিতে কেবল একটি সরল আপ বাগ। ব্যবহারকারী কোনও ভুল করছেন না, সেটআপলগুলি।
এনকোঘ্লান

এটি অপ্রত্যক্ষভাবে আমার প্রশ্নের উত্তর দেয়: দৌড়ানোর ফলে আমি ত্রুটি পেয়েছি pip install pendulum==1.4.4। রানিং pip install setuptools --upgradeত্রুটিটি সাফ করেছে।
অ্যাকাউন্ট ছুঁড়ে ফেলে দিন

32

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

pip install --upgrade pip
pip install --upgrade setuptools

আশা করি এটি পরবর্তী ব্যক্তিকে এই লিঙ্কটি সন্ধান করতে সহায়তা করবে!


এটি আমার জন্যও এটি সমাধান করেছে। (পাইথন ৩.৪, চেষ্টা করছে pip3 install neovim-remote।)
মাইকেল আইলেস

এটি আমার পক্ষে কাজ করেছে। পাইথন ২.7.১6-এ মকো ইনস্টল করার চেষ্টা করছিল। অনুরূপ অজানা বিতরণ বিকল্প পেয়েছে। পিপ ঠিক আছে তবে সেটআপটুলগুলি 40.0.2 থেকে 41.0.1 এ চলে গেছে। তারপরে মাকো এ-ওকে ইনস্টল করলেন।
ম্যাক্স ইয়্যাফি

18

মনোযোগ ! মনোযোগ ! সামনে অসম্পূর্ণ উত্তর। পাইথন মহাবিশ্বের প্যাকেজিংয়ের অবস্থার উপর "সর্বশেষতম মেমো" পেতে, এই মোটামুটি বিস্তারিত নিবন্ধটি পড়ুন

জবাবদিহি তৈরি / ইনস্টল করার চেষ্টা করার সময় আমি এই সমস্যার মধ্যে পড়েছি। সমস্যাটি মনে হচ্ছে ডিস্টিলগুলি প্রকৃতপক্ষে ইনস্টল_আরকিয়ারগুলিকে সমর্থন করে না । সেটআপলগুলিতে ফ্লাইটে বানর-প্যাচ ডিস্টিওলেটগুলি হওয়া উচিত , তবে এটি সম্ভবত তা নয়, কারণ সেটআপটুলগুলির শেষ প্রকাশটি ২০০৯ সাল থেকে ০..6 সি 11 হয়, তবে ডিস্টুটিসগুলি একটি মূল পাইথন প্রকল্প।

সুতরাং ম্যানুয়ালি সেটআপটিউলস -0.6c11-py2.7.egg ইনস্টল করার পরেও setup.py চলমান ডিস্টিওলেটগুলি ডি.পি.ই বাছাই করে, এবং সাইট-প্যাকেজ / সেটআপটুলস / থেকে পাওয়া যায় না।

ব্যবহার করার এছাড়াও setuptools ডকুমেন্টেশন নির্দেশ ez_setup এবং distutils।

যাইহোক, সেটআপলগুলি আজকাল বিতরণ করে নিজেই সরবরাহ করা হয়, এবং সেটআপের সেই স্বাদটি () ইনস্টল_রিক্যুয়্যার সমর্থন করে।


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

1
@ আইগানানৌত, উত্তরটি পর্যালোচনা করার জন্য ধন্যবাদ; আমি এটি সম্পাদনা করেছি।
পাসফলড

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

মার্চ ২০১৩-এর জিনিসগুলির অবস্থা সম্পর্কে দুর্দান্ত প্রবন্ধ। একটি প্রশ্ন ... লেখক বলেছেন: " setuptoolsএবং distributeপ্রকল্পগুলি আবার একত্রিত হওয়ার প্রক্রিয়াধীন রয়েছে, তবে একীকরণ এখনও সম্পূর্ণ হয়নি (আমি এই নিবন্ধটি যত তাড়াতাড়ি তা আপডেট করব) যে পরিবর্তন হয়) "। কেউ কি জানেন যে ২০১২ সাল অবধি জিনিসের অবস্থা কী? পাইথন ২.7 এর জীবনের শেষ তারিখটি দ্রুত এগিয়ে আসার সাথে সাথে প্রচুর পাইথন প্যাকেজ আপডেট এবং পুনঃ-প্যাকেজিং প্রক্রিয়াধীন থাকবে।
ট্রিনিট্রনএক্স

16

আমি পাইথন ২.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

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


1
যোগ import setuptoolsকরা অলৌকিকভাবে আমার জন্য উবুন্টু ১.0.০৪ তে অজগর 3.5 নিয়ে সমস্যাটি সমাধান করেছে।
কুরোপান

8

এটি ডিস্টুটিস থেকে একটি সতর্কতা, এবং এটি এমন একটি চিহ্ন যা আপনার কাছে সেটআপলগুলি ইনস্টল করা নেই। এটি http://pypi.python.org/pypi/setuptools থেকে ইনস্টল করা সতর্কতা সরিয়ে দেবে।


32
সেটআপলগুলি ইনস্টল করা আছে। এখনও সতর্কতা আছে।
টাইলার লং

আপনি বেশ সঠিক, আমি পাইথন ২.6..6 এ এই ত্রুটিটি পেয়েছি এমনকি সেটআপলগুলি বা বিতরণ ইনস্টল থাকলেও। আমি যদি ২.7.২ দিয়ে চেষ্টা করি তবে তা চলে গেছে।
ফ্রেডরিক হার্ড

4
অজগর ২.7.৩ এ আমার এই সমস্যা হচ্ছে
ক্যালভিন চেং

2
এটি আমার জন্য এটি করেছে: wget bootstrap.pypa.io/ez_setup.py -O - ​​| সুডো পাইথন
রাডটেক

আপনাকে ধন্যবাদ, অ্যারাডটেক, যা আমার জন্যও কাজ করেছিল। আপনি সম্ভবত একটি উত্তর হিসাবে আপনার মন্তব্য করতে পারেন?
এস্টেইস

4
sudo apt-get install python-dev  # for python2.x installs
sudo apt-get install python3-dev  # for python3.x installs

এটি কোনও অনুপস্থিত শিরোনাম ইনস্টল করবে। এটি আমার সমস্যা সমাধান করেছে


4

উপসংহারে :

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চান:

  1. সেটআপ.পিinstall_requires থেকে অপসারণ করুন এবং এর সাথে প্রয়োজনীয়তা. টেক্সট ব্যবহার করুনpip
  2. পরিবর্তন entry_pointsকরার জন্য scripts( ডক ) এবং refactor কোনো ওপর নির্ভর মডিউল entry_pointsshebangs এবং একটি এন্ট্রি পয়েন্ট সঙ্গে পূর্ণ স্ক্রিপ্ট যাবে।

আমি প্রস্তাবিত প্যাকেজটি কী তা বোঝার চেষ্টা করছি। আপনি "কেবল ডিস্টিওটিলেস বৈশিষ্ট্যগুলি ব্যবহার করুন" লিখুন "সেটআপটুলগুলি ডিস্টুটিলে রূপান্তর করুন", তবে "এন্ট্রি_পয়েন্টগুলি কেবল একটি সেটআপলুল বৈশিষ্ট্য ছিল" বলেও সামান্য বিপরীত বলে মনে হয়?
ক্রিসিনমটাউন

2

আমি যতদূর বলতে পারি, এটি সেটআপলগুলিতে একটি বাগ যা স্ট্যান্ডার্ড লাইব্রেরিতে বেস শ্রেণিতে কল করার আগে সেটআপটোলগুলি নির্দিষ্ট বিকল্পগুলি সরিয়ে দেয় না: 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 আমি আশা করি প্রাক-মার্জ বিতরণেও একই সমস্যা হবে)


0

পাইথন ২..7 ব্যবহার করে আমি এখন এটি উত্তরাধিকার সরঞ্জামগুলিতে দেখেছি, যেখানে বিল্ড (ডকফাইফাইলের মতো) একটি আনপিনড নির্ভরতা ইনস্টল করে, উদাহরণস্বরূপ পাইস্টেস্ট। পাইটেষ্ট পাইথন ২.7 সমর্থন বাদ দিয়েছে, সুতরাং আপনাকে <নতুন প্যাকেজ রিলিজ সংস্করণ নির্দিষ্ট করতে হতে পারে।

বা বুলেটটি কামড়ান এবং যদি এটি সক্ষম হয় তবে অ্যাপটিকে পাইথন 3 এ রূপান্তর করুন।

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