Setup.py ইন্সটলের সাথে --prefix ত্রুটির সাথে --user একত্রিত করুন


103

আমি পাইথন প্যাকেজগুলি এমন একটি সিস্টেমে ইনস্টল করার চেষ্টা করছিলাম যা আমি সম্প্রতি অ্যাক্সেস পেয়েছি। আমি পাইথনের অপেক্ষাকৃত নতুন ব্যবহারকারী সাইট-প্যাকেজ ডিরেক্টরি এবং নতুন বিকল্পটি গ্রহণ করার চেষ্টা করছিলাম --user। (বিকল্পটি বর্তমানে অননুমোদিত , তবে এটি পাইথন ২.6++ এর জন্য বিদ্যমান; আপনি দৌড়াতে সাহায্য দেখতে পারেন see python setup.py install --help)

আমি যখন দৌড়ানোর চেষ্টা করেছি

python setup.py install --user

আমি যে কোনও প্যাকেজ ডাউনলোড করেছি, আমি সর্বদা নিম্নলিখিত ত্রুটি পেয়েছি:

error: can't combine user with with prefix/exec_prefix/home or install_(plat)base

ত্রুটি অত্যন্ত কারণ জটিল ছিল, হিসাবে আপনি দেখতে পারেন, আমি প্রদানের নি --prefix, --exec-prefix, --install-base, অথবা --install-platbaseকমান্ড লাইন অপশন যেমন পতাকা। সমস্যাটি কী তা জানার চেষ্টা করে আমি অনেক সময় নষ্ট করলাম। আমি নীচে আমার উত্তরটি নথিভুক্ত করছি, কয়েক ঘন্টা ইয়াক শেভিংয়ের কিছু অন্য দরিদ্র আত্মাকে ছাড়িয়ে দেবার আশায় ।


4
./configure --prefix=${HOME}"ইউজার = 1" থাকা অবস্থায় উত্স থেকে পাইথন 3.6 ইনস্টল করার চেষ্টা করার সময় আমি একই ত্রুটি পেয়েছি ~/.pydistutils.cfg। সেক্ষেত্রে আমার "ইউজার = 1" অস্থায়ী মন্তব্য করা দরকার যাতে ইনস্টলেশন প্রক্রিয়াটি সম্পূর্ণ হয়ে যায়।
বিলি

বিলি একটি ভাল ইঙ্গিত দিয়েছে। আমি ভাবছিলাম যে --user বিকল্পটি কোথা থেকে আসছে তা এমনকি আমি এই বিকল্পটি ব্যবহার করি নি। পাইপ ইনস্টল করুন - ਪ੍ਰੀফিক্স / হোম / মাইহোমেডির। আমার কাছে ~ / .pydistutils.cfg ফাইল নেই, এখনও --user বিকল্পটি সেট করা আছে তা খুঁজছি।
কেমিন ঝো

সমস্যার উত্সটি বের করুন। এটি দেবিয়ান-নির্দিষ্ট। - সিস্টেমে অপশন যুক্ত করার পরে পাইপ দিতে সমস্যাটি চলে গেল।
কেমিন ঝো

উত্তর:


161

এক সময় কাজ:

pip install --user --install-option="--prefix=" <package_name>

বা

python setup.py install --user --prefix=

মনে রাখবেন যে এর পরে কোনও পাঠ্য নেই (এমনকি সাদা অংশও নেই) =

পতাকাটি ভুলে যাবেন না--user

একাধিক প্যাকেজ ইনস্টল করা হচ্ছে:

~/.pydistutils.cfgনিম্নলিখিত সামগ্রীগুলি সহ (বা আপনার ওএস / প্ল্যাটফর্মের সমতুল্য) তৈরি করুন :

[install]
prefix=

মনে রাখবেন যে এর পরে কোনও পাঠ্য নেই (এমনকি সাদা অংশও নেই) =

তারপরে প্রয়োজনীয় pip install --userবা python setup.py install --userআদেশগুলি চালান । পতাকাটি ভুলে যাবেন না--user

অবশেষে, এই ফাইলটি সরিয়ে ফেলুন বা নতুন নাম দিন। পাইথন প্যাকেজ সিস্টেম-ব্যাপী (যেমন, ছাড়াই --user) এই ব্যবহারকারী হিসাবে এটি ইনস্টল করার সময় এই ফাইলটি উপস্থিত রেখে সমস্যা দেখা দেবে ~/.pydistutils.cfg

এই সমস্যার কারণ of

এটি ওপেনসুএস এবং রেডহ্যাট উভয়েরই সমস্যা বলে মনে হচ্ছে, যা এই প্ল্যাটফর্মগুলিতে ভার্চুয়ালেনভের একটি ত্রুটি সৃষ্টি করেছে ।

ত্রুটিটি সিস্টেম-স্তরের ডিস্ট্রিল্ট কনফিগারেশন ফাইল (আমার ক্ষেত্রে /usr/lib64/python2.6/distutils/distutils.cfg) যেখানে এটি ছিল

[install]
prefix=/usr/local

মূলত, এটি সর্বদা ইনস্টল কমান্ড চালানোর সমতুল্য install --prefix=/usr/local। উপরের কৌশলগুলির একটি ব্যবহার করে আপনাকে এই স্পেসিফিকেশনটি ওভাররাইড করতে হবে।


4
আপনাকে অনেক ধন্যবাদ. খালি উপসর্গটি আমার সমস্যার সমাধান করেছে: পাইপ 1.1 ওপেনসুএস 11.4।
গেটলি

6
সিস্টেম-প্রশস্ত ডিস্টুটিসস সিএফজি-র মানকে ওভাররাইড করতে আপনি একটি খালি - প্রাকফিক্স = সেটআপ.পি পাস করতে পারবেন
টাক্সডুড

4
কি দারুন! এটি আমার জন্যও কাজ করেছিল। পাওয়ারলাইন ইনস্টল করার চেষ্টা করার সময় আমি একই ত্রুটি পেয়েছি। পাওয়ারলাইন.ড্রেটহেডসস.আর.ইন
এ-ডাব

4
দ্বিতীয় চিন্তায়, এটি করার ফলে মেজর সমস্যা হবে। এই ফাইলটি প্রায় রাখবেন না। আরও তথ্যের জন্য ব্রিউ ডাক্তার দেখুন (ধরে নিই যে আপনি ম্যাক ওএস এক্সে হোমব্রু ব্যবহার করছেন)।
এ-ডাব

4
দ্রষ্টব্য যে এই ফাইলটি এইভাবে রাখলে পাইথনকে মনে হয় যে / এটি আপনার মূল অজগর গ্রন্থাগার ডিরেক্টরি,
দুর্বৃত্তরা

6

মন্তব্যে যেমন উল্লেখ করা হয়েছে, স্বীকৃত উত্তর (@ গোটজেনেস দ্বারা, যাদের সম্ভবত জিন রয়েছে) অপ্রত্যাশিত পরিণতি ঘটাতে পারে।

@rogeleaderr বলেছেন, "নোট করুন যে এই ফাইলটি এভাবে রাখলে পাইথনকে মনে হয় যে / আপনার মূল অজগর গ্রন্থাগার ডিরেক্টরি, যদি আপনি অন্য নতুন প্যাকেজ ইনস্টল করার চেষ্টা করেন তবে বিভ্রান্তিকর সমস্যার কারণ হয়ে দাঁড়াবে।"

@ গোটজেনিসের পরামর্শ অনুসারে একটি নতুন কনফিগার ফাইল লেখার পরিবর্তে কমান্ড লাইনে--prefix= একটি বিকল্প হিসাবে সমান চিহ্নের ডানদিকে কোনও পাঠ্যবিহীন একটি আরও ভাল বিকল্প যুক্ত করা উচিত

$ python setup.py install --user --prefix=

6

অন্যের সময় সাশ্রয় করার জন্য পোস্ট করা, কোনও উপলভ্য উত্তর আমার পক্ষে কাজ করে নি ...

কিছু পরিবেশে, --target( -t) স্যুইচটি ব্যবহার করা একই ত্রুটিটিকে আঘাত করবে। লিনাক্সের দুটি স্বাদে আমার পরীক্ষায়, --prefix=প্যারামিটারটি ব্যবহার করার সময় আমি একই সমস্যার মুখোমুখি হয়েছি ।

কোড:

PYTHONUSERBASE=/tmp/ pip install --user --force-reinstall $PACKAGE

ব্যাখ্যা: আমার কাজটি, যা মনে হয় অনেক পরিবেশ জুড়ে কাজ করে (ম্যাকস, অ্যামাজন লিনাক্স, দেবিয়ান) PYTHONUSERBASEপরিবেশের পরিবর্তনশীলকে একটি অস্থায়ী স্থানে সেট করে । --force-reinstallপ্যাকেজ ইতিমধ্যে ইনস্টল থাকা অবস্থায়ও স্থানীয় ইনস্টলেশনটি ট্রিগার করতে ব্যবহৃত হয়।

এর ফলে মডিউলটি সংকলিত / ইনস্টল হয়ে যাবে (ওএস এবং পাইথন সংস্করণের উপর নির্ভর করে): /tmp/lib/python2.7/site-packages/*


1

আপনি কেবল চালাতে পারেন pip install --user ., কোনও উপসর্গের প্রয়োজন নেই।

এই ভাল যাহাই হউক না কেন, কারণ এটি python3 ডিফল্ট করবে আপনার পিপ পাইথন 3. ব্যবহার করতে কনফিগার করা যদি (আমি লিখতে ভুলে গেছি python3 setup.pyএবং এটি 2.7 এর অধীনে একটি 3-শুধুমাত্র প্যাকেজ ইনস্টল করা আছে)

(ক্রেডিট https://stackoverflow.com/a/1550235/4364036 )


0

আমারও একই সমস্যা ছিল। এটি এর সাথে লুকিয়ে ছিল ~/.config/pip/pip.conf:

[global]
target=/foo/bar

এ জাতীয় কনফিগারেশন আমার অজান্তেই তৃতীয় পক্ষের স্ক্রিপ্ট দ্বারা তৈরি করা হয়েছিল।

আমি পাইপ কনফিগারেশন ফাইলগুলি পরীক্ষা করে target=/foo/barবিকল্পগুলি সরিয়ে দেওয়ার পরামর্শ দিচ্ছি

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