পাইপ ইনস্টল এতে ব্যর্থ হচ্ছে: ওএসআরর: [ত্রুটি 13] ডিরেক্টরিতে অনুমতি অস্বীকার করা হয়েছে


123

pip install -r requirements.txtনীচে ব্যতিক্রম সঙ্গে ব্যর্থ OSError: [Errno 13] Permission denied: '/usr/local/lib/...। কী ভুল এবং আমি কীভাবে এটি ঠিক করব? (আমি জ্যাঙ্গো সেটআপ করার চেষ্টা করছি )

Installing collected packages: amqp, anyjson, arrow, beautifulsoup4, billiard, boto, braintree, celery, cffi, cryptography, Django, django-bower, django-braces, django-celery, django-crispy-forms, django-debug-toolbar, django-disqus, django-embed-video, django-filter, django-merchant, django-pagination, django-payments, django-storages, django-vote, django-wysiwyg-redactor, easy-thumbnails, enum34, gnureadline, idna, ipaddress, ipython, kombu, mock, names, ndg-httpsclient, Pillow, pyasn1, pycparser, pycrypto, PyJWT, pyOpenSSL, python-dateutil, pytz, requests, six, sqlparse, stripe, suds-jurko
Cleaning up...
Exception:
Traceback (most recent call last):
  File "/usr/lib/python2.7/dist-packages/pip/basecommand.py", line 122, in main
    status = self.run(options, args)
  File "/usr/lib/python2.7/dist-packages/pip/commands/install.py", line 283, in run
    requirement_set.install(install_options, global_options, root=options.root_path)
  File "/usr/lib/python2.7/dist-packages/pip/req.py", line 1436, in install
    requirement.install(install_options, global_options, *args, **kwargs)
  File "/usr/lib/python2.7/dist-packages/pip/req.py", line 672, in install
    self.move_wheel_files(self.source_dir, root=root)
  File "/usr/lib/python2.7/dist-packages/pip/req.py", line 902, in move_wheel_files
    pycompile=self.pycompile,
  File "/usr/lib/python2.7/dist-packages/pip/wheel.py", line 206, in move_wheel_files
    clobber(source, lib_dir, True)
  File "/usr/lib/python2.7/dist-packages/pip/wheel.py", line 193, in clobber
    os.makedirs(destsubdir)
  File "/usr/lib/python2.7/os.py", line 157, in makedirs
    mkdir(name, mode)
OSError: [Errno 13] Permission denied: '/usr/local/lib/python2.7/dist-packages/amqp-1.4.6.dist-info'

সম্পর্কিত (ম্যাকোস / হোমব্রিউ নির্দিষ্ট) স্ট্যাকওভারফ্লো.com
উইম

উত্তর:


76

বিকল্প ক) একটি ভার্চুয়ালেনভ তৈরি করুন, এটি সক্রিয় করুন এবং ইনস্টল করুন:

virtualenv .venv
source .venv/bin/activate
pip install -r requirements.txt

বিকল্প খ) আপনার বাড়ির ঘরে ইনস্টল করুন:

pip install --user -r requirements.txt

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


2
sudo:pip: command not foundএই কমান্ডটি চালানোর সময় আমার এইউজ ইএস 2 উদাহরণে আমি এর মতো একটি ত্রুটি পেয়েছি । সাহায্য করুন.
ব্যবহারকারী 3768495

2
@ user3768495 সম্ভবত, পাইপ ডিফল্টরূপে ইনস্টল করা নেই। আপনার ইসি 2 কোন ডিস্ট্রো? এছাড়াও, পাইথন 2 ইনস্টল করা নাও হতে পারে, সুতরাং হয় আপনি পাইথন 2 ইনস্টল করুন বা পাইপ 3 ব্যবহার করুন। যদিও এই বিষয়ে সাবধানতা অবলম্বন করুন।
হেক্টরক্যান্টো

33
আমি পড়েছি এটি এখন একাধিক জায়গায় সুপারিশ করা হয় না। দেখে মনে হচ্ছে যে
পাইপ

3
@ জাস্টুসএপেন: আমি জানি না যে আমি এটি সম্পর্কে কীভাবে অনুভব করছি। আমি মনে করি না যে ওপি-র প্রশ্নের যথাযথ উত্তর মৌলিক কম্পিউটার স্বাস্থ্যবিধি সম্পর্কিত একটি ম্যানুয়াল, যাতে "সুপারিশের অনুমতি নিয়ে ছায়াময়ী কোড চালাবেন না" এবং "নিয়মিত আপনার দাঁত ব্রাশ করুন" সহ। আমি খুঁজে পেয়েছি সর্বোত্তম উত্তরের বিষয়টি উল্লেখ করা উচিত যে প্যাকেজগুলি প্রতি ব্যবহারকারী বা সিস্টেম-ওয়াইড ভিত্তিতে ইনস্টল করা যেতে পারে এবং ওপি ইচ্ছামত সিস্টেম-ওয়াইড ইনস্টল করতে পারে (এটি করার জন্য নিখুঁত বিপর্যয়কর কারণ রয়েছে) সুপার ব্যবহারকারীর অনুমতি প্রয়োজন। সিস্টেমের পথে প্যাকেজ ইনস্টল করার বিরুদ্ধে সতর্কতা সম্ভবত অন্য কোনও এসও প্রশ্নে অন্য কারও কাজ।
টোবিয়া তিসান

8
downvoting কারণ sudoপরামর্শ। যদিও এটি এখন কাজ করে, ভবিষ্যতে এটি আপনাকে অনেক মাথা ব্যাথা দেবে।
জেরাল্ড

318

আমাদের সত্যই sudoসাথে ব্যবহারের পরামর্শ দেওয়া বন্ধ করে দেওয়া উচিত pip install। প্রথমে চেষ্টা করা ভাল pip install --user। যদি এটি ব্যর্থ হয় তবে এখানে শীর্ষ পোস্টটি একবার দেখুন ।

আপনার ব্যবহার না করা কারণটি sudoনিম্নরূপ:

আপনি যখন পিপটি sudoচালাচ্ছেন, আপনি রুট ব্যবহারকারী হিসাবে ইন্টারনেট থেকে নির্বিচারে পাইথন কোডটি চালাচ্ছেন যা বেশ বড় সুরক্ষার ঝুঁকি। যদি কেউ পিআইপিআইতে কোনও দূষিত প্রকল্প স্থাপন করে এবং আপনি এটি ইনস্টল করেন, আপনি আপনার মেশিনে আক্রমণকারীকে মূল অ্যাক্সেস দিন।


5
ভাল পর্যবেক্ষণ। এটি, সর্বোপরি, সকলের জন্য sudo x install, x(সহ x = make)।
টোবিয়া তিসান

1
এটি আমার সমস্যার সমাধানও করে। --User কি যুক্ত করে?
মাইলস জনসন 21

1
@ মাইলস জনসন যুক্ত করা --userমূলের পরিবর্তে আপনার হোম ডিরেক্টরিতে প্যাকেজটি ইনস্টল করে। এই স্থানে কিছু ইনস্টল করার জন্য কোনও অতিরিক্ত সুযোগ-সুবিধার দরকার নেই।
21-22

1
অতিরিক্ত হিসাবে, আপনি যদি প্রক্সিটির পিছনে একটি রিমোট সার্ভারে থাকেন তবে "sudo" আপনাকে রিমোট সার্ভারের নেটওয়ার্কের ইন্টারনেট সংগ্রহস্থল এবং / অথবা গিট সংগ্রহস্থলগুলি থেকে প্যাকেজগুলি আনতে বাধা দেয়।
অ্যাটাকিয়াস

2
সমস্ত উল্লেখ এক sudoবছর আগে সরানো হয়েছে। এই উত্তরটি অপ্রচলিত - দয়া করে এটি সংশোধন করুন এবং আপডেট করুন। আপনাকে প্রতি ব্যবহারকারী বনাম সিস্টেম-ওয়াইড ইনস্টলস এবং অনুমতিগুলির উল্লেখ করতে হবে। অন্যান্য উত্তরগুলির সরাসরি সমালোচনা করার জন্য আপনার উত্তরটি ব্যবহার করবেন না, এটি দ্রুত অপ্রচলিত হতে থাকে।
smci

28

আপনি এর অনুমতি ছাড়াই সিস্টেম-প্রশস্ত পথে একটি প্যাকেজ ইনস্টল করার চেষ্টা করছেন।

  1. সাধারণভাবে, সিস্টেম-প্রশস্ত পথে প্যাকেজটি ইনস্টল করার জন্য আপনি নিজের দায়িত্বেsudo অস্থায়ীভাবে সুপারসার অনুমতিগুলি ব্যবহার করতে পারেন :

     sudo pip install -r requirements.txt

    sudo এখানে আরও সন্ধান করুন

    প্রকৃতপক্ষে, এটি একটি খারাপ ধারণা এবং এটির জন্য কোনও ভাল ব্যবহারের কেস নেই, @ উইমের মন্তব্য দেখুন।

  2. যদি আপনি সিস্টেম-ব্যাপী পরিবর্তন করতে না চান তবে আপনি পতাকাটি ব্যবহার করে আপনার প্রতি ব্যবহারকারী পথে প্যাকেজটি ইনস্টল করতে পারেন --user

    এটি যা লাগে তা হ'ল:

     pip install --user runloop requirements.txt
  3. পরিশেষে, এমনকি আরও ভাল দানাদার নিয়ন্ত্রণের জন্য , আপনি একটি ভার্চুয়ালেনভও ব্যবহার করতে পারেন যা উন্নয়নের পরিবেশের জন্য সর্বোত্তম সমাধান হতে পারে, বিশেষত যদি আপনি একাধিক প্রকল্পে কাজ করছেন এবং প্রত্যেকের নির্ভরতার উপর নজর রাখতে চান।

    আপনার ভ্যুচুয়ালেনভ সাথে সক্রিয় করার পরে

    $ my-virtualenv/bin/activate

    নিম্নলিখিত কমান্ড virtualenv ভিতরে প্যাকেজটি ইনস্টল হবে (এবং না সিস্টেম-ব্যাপী পথে):

    pip install -r requirements.txt


4
রুট দিয়ে পিপ চালানো সুরক্ষা ঝুঁকি
Nrzonline

রুট হিসাবে ইন্টারনেট থেকে কোড চালিত যে কোনও কিছু চালানো সুরক্ষা ঝুঁকির সাথে আসে।
টোবিয়া তিসান

এটি প্রায় সেরা উত্তর, তবে এখনও আপডেট করা দরকার। ক) এখন আমাদের pyenv/pipenvউচিত, virtualenv(বা conda-env) খ) ক্ষুদ্র ক্ষতিকারক হিসাবে বিবেচনা করা উচিত, এবং এর অন্যান্য উত্তরগুলি দেখুন। সুতরাং প্রথমে vর্ষাভিত্তিক উত্তরটি রাখুন, এবং সুডো একটি শেষ, একটি বড় দাবি অস্বীকার করে disc
smci

1
sudo pip install -r requirements.txtকখনও ঠিক হয় না। সিস্টেমের অজগর পরিবেশটি সিস্টেম, পিরিয়ডের অন্তর্গত । আপনি সিস্টেম মধ্যে আরো পাইথন কাপড় ইনস্টল করেন, তাহলে প্যাকেজ ম্যানেজার শুধুমাত্র (যেমন সঙ্গে এটা করতে sudo yum install, apt-get, ইত্যাদি ...) যেহেতু সেই Repos উপকার লাইব্রেরি নিরাপদ এবং সামঞ্জস্যপূর্ণ সংস্করণ থাকতে হবে।
wim 12'19

1
পুরাতন @TobiaTesan sudo make install, সাধারণত কম্পাইল + কোড লিঙ্ক করা হলে, একটি সঙ্গে সত্যিই অনুরূপ নয় sudo pip installযেহেতু সিস্টেমে পাইথন env ইনস্টল নির্ভরতা বাতিল করতে । মনে করুন যে কোনও সিস্টেম পরিষেবা রয়েছে python-frobnicator, যার উপর নির্ভরশীলতা রয়েছে froblib(এটি প্যাকেজ ম্যানেজারেও থাকবে এবং একটি সামঞ্জস্যপূর্ণ সংস্করণে পিন করা হবে) এবং তারপরে আপনি sudo pip installকিছু অন্য অ্যাপ্লিকেশন বা লাইব যার উপর নির্ভরতা রয়েছে " froblib > 1.2"। পিপ আনন্দের froblibসাথে নতুন সংস্করণটির সংস্করণটিকে "আপগ্রেড" করবে , যা বেমানান / অপরিবর্তিত এবং সিস্টেমটি ভেঙে দিতে পারে।
wim

26

লিনাক্স (উবুন্টু ভিত্তিক) উপর ব্যথার পরে অনুমতি নিয়ে ত্রুটিগুলি অস্বীকার করে এবং উপরের বার্টের উত্তর থেকে উত্তোলনের পরে আমার জন্য কী কাজ করেছে তা কেবল স্পষ্ট করেই আমি এখন ব্যবহার করছি ...

$ pip install --user <package-name>

বা যদি কোনও প্রয়োজনীয় ফাইলগুলিতে পাইপ চলছে ...

$ pip install --user -r requirements.txt

এবং এই ভার্চুয়াল পরিবেশ তৈরি সহ প্রতিটি পাইপ ইনস্টলের জন্য নির্ভরযোগ্যভাবে কাজ করে।

যাইহোক, পরিষ্কার সমাধান আমার আরও অভিজ্ঞতায় ইনস্টল করতে হয়েছে python-virtualenvএবং virtualenvwrapperসঙ্গে sudo apt-get installসিস্টেম স্তরে।

তারপর, ভার্চুয়াল পরিবেশে ভিতরে, ব্যবহার pip installছাড়া --userপতাকা ছাড়া sudo। সামগ্রিকভাবে অনেক ক্লিনার, নিরাপদ এবং সহজ।


আমি একটি "- 'ব্যবহারকারীর ইনস্টল করতে পারি না User ব্যবহারকারী সাইট-প্যাকেজগুলি এই ভার্চুয়াল্নভে দৃশ্যমান নয়।" ব্যবহার করার চেষ্টা করার সময় ত্রুটিpip install --user -r requirements.txt
আমির এ। শাবানী

@ আমিরআ.শাবানী উত্তরটি আপনার প্রশ্নের পর থেকেই সম্পাদনা করা হয়েছে। এটি এখন বলেছে - ভার্চুয়াল পরিবেশের অভ্যন্তরে, - ব্যবহারকারীর পতাকা ছাড়াই এবং সুডো ছাড়াই পাইপ ইনস্টল ব্যবহার করুন
দাইশি

7

কিছু পাইথন ইনস্টলেশন পাথের জন্য ব্যবহারকারীর লেখার অনুমতি নেই। আপনি এই দ্বারা অনুমতি দিতে পারেন:

sudo chown -R $USER /absolute/path/to/directory

সুতরাং আপনার অনুমতি দেওয়া উচিত, তারপরে আবার এটি ইনস্টল করার চেষ্টা করুন, আপনার যদি নতুন পথ থাকে তবে আপনারও অনুমতি দেওয়া উচিত:

sudo chown -R $USER /usr/local/lib/python2.7/

2
ব্রিউ দিয়ে পাইথন ইনস্টল করার জন্য, এটি সঠিক উত্তর কারণ ক্রু স্থানীয় ব্যবহারকারী হিসাবে প্যাকেজগুলি বজায় রাখে (মূল নেই)।
idbrii

9
/ usr / স্থানীয় দির chowning একটি ভাল ধারণা নয়। এটি ব্যবহারকারীর অন্তর্ভুক্ত নয়। ইউনিক্স ফাইল কাঠামো সম্পর্কে আপনার পড়া উচিত।
ব্যবহারকারী 8162

6
স্টাফের অধীনে স্টাফগুলি /usrসাধারণত এই দিনগুলিতে মূলের মালিকানাধীন। অবিচ্ছিন্নভাবে সেখানে ডুবিয়ে রাখা আপনার সিস্টেমে মূলত স্ক্রু আপ করতে পারে। এড়িয়ে চলুন
উইম

0

আপনার যদি অনুমতি প্রয়োজন হয় তবে আপনি 'সুডো' দিয়ে 'পাইপ' ব্যবহার করতে পারবেন না। আপনি একটি কৌশল করতে পারেন, যাতে আপনি 'sudo' ব্যবহার করতে পারেন এবং প্যাকেজ ইনস্টল করতে পারেন। আপনার পাইপ কমান্ডের সামনে কেবল 'সুডো পাইথন-মি ...' রাখুন।

sudo python -m pip install --user -r package_name

আমার কাছে ভাল লাগছে তবে আপনি দয়া করে কিছু ব্যাখ্যা যুক্ত করতে পারেন।
পাইথোনিক 833

-1

সুতরাং, আমি সম্পূর্ণ ভিন্ন কারণে একই একই ত্রুটি পেয়েছি। একটি সম্পূর্ণ পৃথক, কিন্তু পরিচিত দরুন Homebrew + + পিপ বাগ , আমি অনুসরণ করে এই কার্যসংক্রান্ত Google মেঘ সাহায্য ডক্স, যেখানে আপনি আপনার হোম ডিরেক্টরীতে একটি .pydistutils.cfg ফাইল তৈরি তালিকাভুক্ত। এই ফাইলটির একটি বিশেষ কনফিগার রয়েছে যা আপনার নির্দিষ্ট লাইব্রেরি ইনস্টল করার জন্য আপনার কেবলমাত্র ব্যবহার করার কথা। প্যাকেজ ইনস্টল করার পরে আমার সেই disutils.cfg ফাইলটি সরিয়ে নেওয়া উচিত ছিল, তবে আমি তা করতে ভুলে গিয়েছিলাম। আমার জন্য ঠিক ঠিক ছিল ...

rm ~/.pydistutils.cfg

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


-1

এটি অনুমতির সমস্যা কারণে,

sudo chown -R $USER /path to your python installed directory

ডিফল্ট এটি হবে /usr/local/lib/python2.7/

বা চেষ্টা করুন,

pip install --user -r package_name

এবং তারপরে বলুন, pip install -r requirements.txtএটি আপনার vভির ভিতরে ইনস্টল করবে

বলবেন না, sudo pip install -r requirements.txtএটি অযৌক্তিক অজগর পথে ইনস্টল করবে।

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