আমি আমার পাইথন সাইট-প্যাকেজ ডিরেক্টরিগুলির অবস্থান কীভাবে খুঁজে পাব?


940

আমি কীভাবে আমার সাইট-প্যাকেজ ডিরেক্টরিটির অবস্থান সন্ধান করব?


62
আপনি যদি কেবল একটি প্যাকেজের সঠিক অবস্থান চান তবে আপনি ব্যবহার করতে পারেনpip show <package name>
joshuakcockrell

উত্তর:


528

দুটি ধরণের সাইট-প্যাকেজ ডিরেক্টরি রয়েছে, বৈশ্বিক এবং প্রতি ব্যবহারকারী

  1. গ্লোবাল সাইট-প্যাকেজ (" ডিস্ট-প্যাকেজগুলি ") ডিরেক্টরিগুলি sys.pathআপনি চালানোর সময় তালিকাভুক্ত করা হয় :

    python -m site

    পাইথন কোডের সাইট মডিউলgetsitepackages থেকে আরও সংক্ষিপ্ত তালিকার জন্য :

    python -c 'import site; print(site.getsitepackages())'

    দ্রষ্টব্য: ভার্চুয়ালনেভসের সাথে গেটিপ্যাকেজগুলি উপলভ্য নয় , sys.pathউপরে থেকে ভ্যুচুয়ালেভের সাইট-প্যাকেজ ডিরেক্টরি সঠিকভাবে তালিকাভুক্ত করা হবে। পাইথন 3 এ, আপনি পরিবর্তে সিসকনফিগ মডিউলটি ব্যবহার করতে পারেন :

    python3 -c 'import sysconfig; print(sysconfig.get_paths()["purelib"])'
  2. ব্যবহারকারী প্রতি সাইট-প্যাকেজ ডিরেক্টরি ( PEP 370 ) যেখানে পাইথন আপনার স্থানীয় প্যাকেজ ইনস্টল হল:

    python -m site --user-site

    যদি এটি কোনও অ-বিদ্যমান ডিরেক্টরিতে নির্দেশ করে তবে পাইথনের প্রস্থান স্থিতিটি পরীক্ষা করে দেখুন python -m site --helpএবং ব্যাখ্যা দেখুন।

    ইঙ্গিত: চলমান pip list --userবা pip freeze --userআপনাকে ব্যবহারকারীর প্রতিটি সাইট-প্যাকেজ ইনস্টল করা একটি তালিকা দেয় ।


ব্যবহারিক টিপস

  • <package>.__path__আপনাকে নির্দিষ্ট প্যাকেজের অবস্থান (গুলি) সনাক্ত করতে দেয়: ( বিশদ )

    $ python -c "import setuptools as _; print(_.__path__)"
    ['/usr/lib/python2.7/dist-packages/setuptools']
  • <module>.__file__আপনাকে একটি নির্দিষ্ট মডিউলটির অবস্থান সনাক্ত করতে দেয়: ( পার্থক্য )

    $ python3 -c "import os as _; print(_.__file__)"
    /usr/lib/python3.6/os.py
  • pip show <package>দেবিয়ান-স্টাইলের প্যাকেজ তথ্য প্রদর্শন করতে চালান :

    $ pip show pytest
    Name: pytest
    Version: 3.8.2
    Summary: pytest: simple powerful testing with Python
    Home-page: https://docs.pytest.org/en/latest/
    Author: Holger Krekel, Bruno Oliveira, Ronny Pfannschmidt, Floris Bruynooghe, Brianna Laugher, Florian Bruhin and others
    Author-email: None
    License: MIT license
    Location: /home/peter/.local/lib/python3.4/site-packages
    Requires: more-itertools, atomicwrites, setuptools, attrs, pathlib2, six, py, pluggy

17
একটি ভার্চুয়ালেনভে একটি সাইট প্যাকেজ ডিরেক্টরি রয়েছে। আপনি ব্যবহার করে সাইট-নির্দিষ্ট মডিউলগুলির জন্য / এর বাইরে ভার্চুয়ালেনভ ব্যবহার করে ডিরেক্টরিটি পেতে পারেন python -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())"(এটি পাইথন 2 এবং 3 উভয় ক্ষেত্রেও কাজ করে)।
jfs

4
খুশী হলাম। এবং প্রথমটি পেতে:python -c "import site; print(site.getsitepackages()[0])"
ব্রেন্ট ফাউস্ট

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

1
আমি পাইথনের অফিসিয়াল টিউটোরিয়ালে পরিবর্তনের পরামর্শ দিয়েছি। দয়া করে দেখুন : PR # 16974 পরামর্শ @salotz জন্য বিবরণ জন্য, এবং ধন্যবাদ!
পিটারিনো

1
আমার মনে হয় স্ট্যাকওভারফ্লো.com/a/52638888/1365918 সহজেই এই প্রশ্নের সেরা উত্তর।
কাপাড

652
>>> import site; site.getsitepackages()
['/usr/local/lib/python2.7/dist-packages', '/usr/lib/python2.7/dist-packages']

(অথবা সাথে প্রথম আইটেম site.getsitepackages()[0])


17
এটি ভাল তবে দুর্ভাগ্যক্রমে, এই ফাংশনটি কেবল পাইথন 2.7 থেকে পাওয়া যায়। সুতরাং, অজানা সমাধান যদি আপনি পাইথন ২..7 বা তার বেশি ব্যবহার করেন তবে অজগর ২.6 বা তার জন্য নীচে কাজ করছেন না
ড্যান নিয়েরো

15
পাইথন-সি "আমদানি সাইট; প্রিন্ট (সাইট.getsitepackages ())"
লার্স স্নাইডার

29
আমি অ্যাট্রিবিউটআরার পেয়েছি: 'মডিউল' অবজেক্টটির কোনও গুণ 'গেটসিটপ্যাকেজ' নেই যখন ভ্যুচুয়ালেনভ (পাইথন ২..8.৮) এর সাথে ব্যবহার করা হচ্ছে, নীচের ডিস্টিওলস সলিউশন যদিও কাজ করে।
Radtek

8
@radtek: venv এর জন্য, আমি venv মাধ্যমে সনাক্ত করা hasattr(sys,'real_prefix')এবং তারপর heuristically সাইট প্যাকেজের নির্ধারণ থেকে [p for p in sys.path if p.endswith('site-packages')][-1](প্লাস পরীক্ষা যদি এক কাজ করার আগে পাওয়া যায় [-1]
eudoxos

4
@ অ্যাডটেক এটি একটি পরিচিত বাগ যা সাইটের মডিউলটি ভার্চুয়ালেনভ github.com/pypa/virtualenv/issues/355
গুইলেম কাকুরুল

319

একটি সমাধান যা:

  • ভ্যুচুয়ালেনভের বাইরে - বিশ্বব্যাপী পথ সরবরাহ করে সাইট-প্যাকেজগুলির ,
  • insidue a virtualenv - virtualenv এর সাইট-প্যাকেজ সরবরাহ করে

... এই ওয়ান লাইনার:

python -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())"

পাঠযোগ্যতার জন্য ফর্ম্যাট করা (ওয়ান-লাইনার হিসাবে ব্যবহার না করে) যা দেখতে নিম্নলিখিতটির মতো:

from distutils.sysconfig import get_python_lib
print(get_python_lib())


উত্স: "কীভাবে জাঙ্গো ইনস্টল করবেন" ডকুমেন্টেশনের একটি অতি পুরানো সংস্করণ (যদিও এটি কেবল জাঙ্গো ইনস্টলেশন থেকে বেশি কার্যকর)


1
ভ্যুচুয়ালেনভ কি এর সাইট-প্যাকেজগুলি খুঁজে পাওয়ার কোনও উপায় সরবরাহ করে?
ড্যারিল স্পিজিটর

10
cdsitepackagesপরিবেশের সাইট-প্যাকেজ ডিরেক্টরিতে সরাসরি পরিবর্তনের জন্য আপনি ভার্চুয়ালেনভ্রাপার ব্যবহার করতে পারেন, যার মধ্যে কমান্ড রয়েছে ।
2x

6
@ পাইওটারডব্রোগস্ট: পাইথন ২.7 এ আমার জন্য লিনাক্সের একটি
ভার্চুয়ালেনভে কাজ করে

2
প্রথম মন্তব্যটি আর প্রযোজ্য নয়: এটি কোনও ভার্চুয়ালেনভের বাইরে এবং অভ্যন্তরে সঠিক অবস্থান দেখিয়েছে।
অ্যাস্ট্রোজুয়ানলু

2
উইন্ডোজ 10 এ লিনাক্স ব্যাশ ব্যবহার করে আমার জন্য কাজ করেনি, এটি /usr/lib/python3/dist-packagesপরিবর্তে ফিরে আসে /usr/lib/python3.5/dist-packages
দেলগান

99

উবুন্টুর জন্য ,

python -c "from distutils.sysconfig import get_python_lib; print get_python_lib()"

...সঠিক নয়.

এটা আপনাকে নির্দেশ করবে /usr/lib/pythonX.X/dist-packages

এই ফোল্ডারে কেবল আপনার অপারেটিং সিস্টেম প্রোগ্রামগুলি চালনার জন্য স্বয়ংক্রিয়ভাবে ইনস্টল করা প্যাকেজগুলি রয়েছে।

উবুন্টুতে , সাইট-প্যাকেজ ফোল্ডারটিতে সেটআপ_টুলস installed ইজি_ইনস্টল \ পিপের মাধ্যমে ইনস্টল হওয়া প্যাকেজগুলি থাকবে/usr/local/lib/pythonX.X/dist-packages

ব্যবহারের কেসটি ইনস্টলেশন বা উত্স কোড পড়ার সাথে সম্পর্কিত হলে দ্বিতীয় ফোল্ডারটি সম্ভবত আরও কার্যকর।

আপনি যদি উবুন্টু ব্যবহার না করেন তবে আপনি সম্ভবত টার্মিনালে প্রথম কোড বাক্সটি নিরাপদে অনুলিপি করছেন।


3
যদি প্রশ্নকর্তা কোনও নির্দিষ্ট প্যাকেজের অবস্থানের পরে থাকেন module.__file__তবে ভাল উপায়। যদি তারা জিনিসগুলি ইনস্টল করার চেষ্টা করছেন ... কেবলমাত্র সরঞ্জামগুলি ব্যবহার করুন।
তোবু

'/usr/lib/pythonX.X/dist-packages' in site.getsitepackages()উবুন্টুতে (যদিও এটি তালিকার পরে চলে /usr/local/...) আপনি কেবল কিছু /usr/localমাধ্যমে প্রবেশ করুন sudo pipএবং আপনি sudo pipনিজের বিতরণ করার সিদ্ধান্ত না নিলে উবুন্টুতে ব্যবহার করা উচিত নয় : আপনি যদি ব্যবহার করেন sudo pipতবে বর্তমান এবং ভবিষ্যতের অজগর মডিউলগুলির সমস্ত নির্ভরতা ইনস্টল sudo aptবা sudo pipসামঞ্জস্যপূর্ণ কিনা তা নিশ্চিত করা আপনার দায়িত্ব । কী সমস্যা সমাধানের virtualenvজন্য তৈরি হয়েছিল তা
jfs

2 dist-packagesইন (এল) উবুন্টুর পার্থক্য বুঝতে সুস্পষ্ট ব্যাখ্যা ।
টিমো

69

এটিই আমার পক্ষে কাজ করেছে:

python -m site --user-site

15
আমার জন্য এটি এমন একটি ফোল্ডারে নির্দেশ করে যা উপস্থিত নেই ( ~/.local/lib/python2.7/site-packages)।
নিল ট্রাফ্ট

1
একই, ওএস এক্স ম্যাভেরিক্সে, আমার বাড়ি .লোকল আমি যা চেয়েছিলাম এটি প্লাসটি খুঁজে পেতে চেয়েছিল না হ্যাঁ এটি আসলে সেখানে নেই।
র‌্যাডটেক

এটি আমার প্রধান / লাইব্রেরি ফোল্ডারে আমাকে নিজেই এটিতে নেভিগেট করতে হয়েছিল, কোনও কারণে সরাসরি পুরো পথটি কাজ করছে না
ইফওয়ামেজেস

আমি এখানে ইনস্টল করা প্যাকেজগুলি কীভাবে ব্যবহার করব? যদি আমি virtualenvএটি করি তবে অভিযোগ করে যে প্যাকেজটির অস্তিত্ব নেই। আমি কাস্টম অবস্থানে ইনস্টল থাকা প্যাকেজগুলি কীভাবে আবেদন করব?
AbtPst

2
এটি আপনাকে বলে যেখানে পাইথন ব্যবহারকারী নির্দিষ্ট প্যাকেজগুলির সন্ধান করবে। "এমনকি বিদ্যমান নেই" এবং "আমি এটি চেয়েছিলাম এমনটি নয়" এর মতো মন্তব্যগুলি এই প্রসঙ্গে কোনও অর্থ দেয় না।
সৎ আবে

28

ধরা যাক আপনি 'জাজানো' প্যাকেজটি ইনস্টল করেছেন। এটি আমদানি করুন এবং টাইপ করুন দির (জাজানো)। এটি আপনাকে দেখাবে, সেই মডিউলটির সাথে সমস্ত কার্য এবং বৈশিষ্ট্য। পাইথন ইন্টারপ্রেটার টাইপ করুন -

>>> import django
>>> dir(django)
['VERSION', '__builtins__', '__doc__', '__file__', '__name__', '__package__', '__path__', 'get_version']
>>> print django.__path__
['/Library/Python/2.6/site-packages/django']

আপনি যদি মার্উরিয়াল ইনস্টল করেন তবে আপনি একই জিনিসটি করতে পারেন।

এটি স্নো চিতাবাঘের জন্য। তবে আমি মনে করি এটি সাধারণভাবেও কাজ করা উচিত।


>>> আমদানি PG >>> মুদ্রণ PG .__ path__ ট্রেসব্যাক (সাম্প্রতিকতম কল শেষ): ফাইল "<stdin>", লাইন 1, মধ্যে <মডিউল> AttributeError: 'মডিউল' অবজেক্ট কোন অ্যাট্রিবিউট 'হয়েছে পাথ '
Dannid

এটি কাজ করে, PYDEV পথে যোগ করার জন্য আমার স্কলারন প্যাকেজটি সন্ধান করা দরকার, ধন্যবাদ।
বার্কে

django.__file__পরিবর্তে এই জন্য ব্যবহার করুন __path__। এবং, না, এটির কোনও গ্যারান্টি নয় যে এটি সাইটের প্যাকেজগুলির সাথে কিছু করার আছে তবে জ্যাঞ্জোর মতো জিনিসগুলির সাথে, আপনি সম্ভবত পাইপ ইনস্টল করেছেন , আপনি যখন তাড়াহুড়া করবেন তখন তা করবে এবং এটির জন্য ব্যবহার করা যেতে পারে অন্যান্য উদ্দেশ্যেও (উদাহরণস্বরূপ ফাইল সিস্টেম থেকে একটি ডিফল্ট কনফিগারেশন ফাইল পড়া)।
জে এল পেয়ারেট

এটি এবং অন্যান্য উত্তরের উপর ভিত্তি করে আপনি কমান্ড লাইন থেকে আপনার লাইনে যাওয়ার জন্য এক লাইনে এটি করতে পারেন foo.bar প্যাকেজ:python -c "import foo.bar as _; print(_.__path__[0])"
snark

23

অন্যরা যেমন উল্লেখ distutils.sysconfigকরেছে , এর সাথে সম্পর্কিত সেটিংস রয়েছে:

import distutils.sysconfig
print distutils.sysconfig.get_python_lib()

... যদিও ডিফল্টটি site.pyআরও কিছু অপরিশোধিত কিছু করেছে যা নীচে বর্ণিত হয়েছে :

import sys, os
print os.sep.join([sys.prefix, 'lib', 'python' + sys.version[:3], 'site-packages'])

(এটি ${sys.prefix}/lib/site-pythonউভয় পাথও যুক্ত করে এবং যুক্ত করে sys.exec_prefix, এটি কি ধ্রুবক আলাদা হওয়া উচিত)।

সে বলল, প্রসঙ্গটা কী? আপনার site-packagesসরাসরি আপনার সাথে ঝামেলা করা উচিত নয় ; সেটআপলগুলি / ডিস্টুটিলগুলি ইনস্টলেশনের জন্য কাজ করবে এবং আপনার প্রোগ্রামটি ভার্চুয়ালেনভে চলতে পারে যেখানে আপনার পাইথনপাথ সম্পূর্ণরূপে ব্যবহারকারী-স্থানীয়, তাই এটি সরাসরি সিস্টেম-প্যাকেজগুলির সরাসরি ব্যবহার অনুমান করা উচিত নয়।


3
python2অসু এবং উবুন্টুতে ভার্চুয়ালেনভের সাথে এবং ছাড়াও নির্ভরযোগ্য কাজ করে তবে একেবারেই python3নয়।
জিটার

2
২০০৮ কিছুক্ষণ আগে - এই উত্তরটি পাইথন 3.0 এর প্রকাশের তিন মাস আগে ছিল।
চার্লস ডাফি

নিশ্চিত, কিন্তু আজ আমার মন্তব্য সাহায্য করতে পারে। ভুল হলে আমাকে সংশোধন করুন তদ্ব্যতীত, আমি এই উত্তরটি বা অন্য কোনওটির সাথে সম্মতি জানাই নি python3
জিটার

22

একটি আধুনিক স্টাডলিব উপায়টি sysconfigমডিউলটি ব্যবহার করছে , সংস্করণ ২.7 এবং ৩.২+ এ উপলব্ধ।

দ্রষ্টব্য : sysconfig( উত্স ) এখানে অন্য বেশ কয়েকটি distutils.sysconfigউত্তরে উল্লিখিত সাবমডিউল ( উত্স ) দিয়ে বিভ্রান্ত হওয়ার দরকার নেই। পরেরটি সম্পূর্ণ ভিন্ন মডিউল এবং এটি get_pathsনীচে আলোচিত ফাংশনটির অভাব রয়েছে ।

পাইথন বর্তমানে আটটি পাথ ( ডক্স ) ব্যবহার করে:

  • stdlib : স্ট্যান্ডার্ড পাইথন লাইব্রেরি ফাইলগুলি রয়েছে যা প্ল্যাটফর্ম-নির্দিষ্ট নয় directory
  • platstdlib : স্ট্যান্ডার্ড পাইথন লাইব্রেরি ফাইল যা প্ল্যাটফর্ম-নির্দিষ্ট specific
  • প্ল্যাটলিব : সাইট-নির্দিষ্ট, প্ল্যাটফর্ম-নির্দিষ্ট ফাইলের ডিরেক্টরি।
  • শুদ্ধলিবি : সাইট-নির্দিষ্ট, অ-প্ল্যাটফর্ম-নির্দিষ্ট ফাইলের ডিরেক্টরি।
  • অন্তর্ভুক্ত : প্ল্যাটফর্ম-নির্দিষ্ট হেডার ফাইলগুলির জন্য ডিরেক্টরি।
  • প্ল্যাটিনক্লাউন : প্ল্যাটফর্ম-নির্দিষ্ট হেডার ফাইলগুলির জন্য ডিরেক্টরি।
  • স্ক্রিপ্ট : স্ক্রিপ্ট ফাইলের জন্য ডিরেক্টরি।
  • ডেটা : ডেটা ফাইলের জন্য ডিরেক্টরি।

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

সিস্টেম স্তরে (এটি ম্যাক ওএসে পাইথন ৩.7.০):

>>> import sysconfig
>>> sysconfig.get_paths()['purelib']
'/usr/local/Cellar/python/3.7.0/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages'

একটি ভেন্যু সহ, আপনি এই জাতীয় কিছু পাবেন

>>> import sysconfig
>>> sysconfig.get_paths()['purelib']
'/private/tmp/.venv/lib/python3.7/site-packages'

এই বিবরণগুলি প্রদর্শনের জন্য একটি শেল স্ক্রিপ্টও পাওয়া যায়, যা আপনি sysconfigমডিউল হিসাবে সম্পাদন করে অনুরোধ করতে পারেন :

python -m sysconfig

এটি দুর্দান্ত উত্তর, আমি খুশি যে নতুন সিসকনফিগ মডিউলটি এটিকে সহজ করে তুলেছে। platlibযেমন স্থানীয় উপসর্গ পাওয়ার উপায় আছে কি /usr/local/lib/python3.6/site-packages? Ditionতিহ্যগতভাবে, স্থানীয়ভাবে ইনস্টল থাকা জিনিসগুলি shouldোকা উচিত /usr/local
eudoxos

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

21

দেবিয়ান ভিত্তিক সিস্টেমে পাইথন ইনস্টলেশন সহ ইনস্টল করা নেটিভ সিস্টেম প্যাকেজগুলি এখানে পাওয়া যাবে:

/usr/lib/python2.7/dist-packages/

ওএসএক্সে - /Library/Python/2.7/site-packages

এই ছোট কোড ব্যবহার করে:

from distutils.sysconfig import get_python_lib
print get_python_lib()

তবে এর মাধ্যমে ইনস্টল করা প্যাকেজগুলির তালিকাটি এখানে pipপাওয়া যাবে:

, / Usr / local / bin /

অথবা পাইথন প্যাকেজগুলি রয়েছে এমন সমস্ত রাস্তাগুলি তালিকাভুক্ত করতে নিম্নলিখিত কমান্ডটি লিখতে পারেন।

>>> import site; site.getsitepackages()
['/usr/local/lib/python2.7/dist-packages', '/usr/lib/python2.7/dist-packages']

দ্রষ্টব্য: অবস্থানটি ওএসএক্সের মতো আপনার ওএসের ভিত্তিতে পরিবর্তিত হতে পারে

>>> import site; site.getsitepackages()
['/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages', '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/site-python', '/Library/Python/2.7/site-packages']

যদি আমি সঠিকভাবে মনে রাখি তবে ডিস্ট-প্যাকেজগুলি ডেবিয়ানের জন্য নির্দিষ্ট এবং ডাইরভেটস।
স্যামুয়েল

1
@ সামুয়েলসন্তান আপনি সঠিক আছেন ডিস্ট-প্যাকেজগুলি ডিবিয়ান ভিত্তিক সিস্টেমগুলির জন্য নির্দিষ্ট। এই ক্ষেত্রে আমি site.getsitepackages()সিস্টেম ইনস্টলেশন থেকে অনুরোধ করেছি তাই ডি-প্যাকেজগুলি, অন্যান্য ইনস্টলেশন সাইট-প্যাকেজগুলি দেখায়।
fnatic_shak

15

সমস্ত উত্তর (বা: একই উত্তর বারবার পুনরায় করা) অপর্যাপ্ত। আপনি যা করতে চান তা হ'ল:

from setuptools.command.easy_install import easy_install
class easy_install_default(easy_install):
  """ class easy_install had problems with the fist parameter not being
      an instance of Distribution, even though it was. This is due to
      some import-related mess.
      """

  def __init__(self):
    from distutils.dist import Distribution
    dist = Distribution()
    self.distribution = dist
    self.initialize_options()
    self._dry_run = None
    self.verbose = dist.verbose
    self.force = None
    self.help = 0
    self.finalized = 0

e = easy_install_default()
import distutils.errors
try:
  e.finalize_options()
except distutils.errors.DistutilsError:
  pass

print e.install_dir

চূড়ান্ত লাইনটি আপনাকে ইনস্টলেশন ডিয়ার দেখায়। উবুন্টুতে কাজ করে, যেখানে উপরেরগুলি তা করে না। উইন্ডোজ বা অন্যান্য ডিসট সম্পর্কে আমাকে জিজ্ঞাসা করবেন না, যেহেতু এটি ইজ_আইনস্টলটি ডিফল্টরূপে ঠিক একই দির ব্যবহার করে, ইজি_ইনস্টল যেখানে কাজ করে (সম্ভবত, সর্বত্র, এমনকি ম্যাকস) এটি সর্বত্রই সঠিক। আনন্দ কর. দ্রষ্টব্য: মূল কোডটিতে এর অনেকগুলি স্বারওয়ার্ড রয়েছে।


1
ধন্যবাদ, এটি পিডি 3 তে বন্ধুত্বের সাথে মুদ্রণের জন্য এটি আমাকে /usr/local/lib/python3.4/dist-packages পেয়ে যায় আমি /usr/lib/python3.4/dist কীভাবে পাব তার জন্য কাজ করার চেষ্টা করছি -প্যাকেজ তাই আরও খেলতে হবে।
স্টুয়ার্ট অ্যাকসন

4
বাহ্যিক গ্রন্থাগার প্রয়োজন easy_installএবং অনুপলব্ধ যা অপ্রতুলতা থাকলে তা চূড়ান্তভাবে ব্যর্থ হয় না :)
জিটার

1
প্রকৃতপক্ষে, এটি নিখুঁত নয়, তবে এটি আমার পক্ষে কাজ করেছে এবং এটি বের করার জন্য অনেক সময় নিয়েছে, তাই আমি এখানে আশা রেখেছিলাম যে আমি ইতিমধ্যে কাটিয়েছি এমন সময়টি অন্য কেউ তৈরি করতে পারে।
প্রতারক

13

একটি পার্শ্ব-নোট: distutils.sysconfig.get_python_lib()একাধিক সাইট-প্যাকেজ ডিরেক্টরি উপস্থিত থাকলে ( এই নিবন্ধটি প্রস্তাবিত হিসাবে) প্রস্তাবিত সমাধান ( ) কাজ করে না । এটি কেবলমাত্র মূল সাইট-প্যাকেজ ডিরেক্টরিটি ফিরিয়ে দেবে।

হায়রে আমার আর এর চেয়ে ভাল সমাধান আর নেই। পাইথন সাইট-প্যাকেজ ডিরেক্টরিগুলির মধ্যে কেবল প্যাকেজগুলির মধ্যে নজর রাখে না।


1
আমার ধারণা, সেই কারণেই get_python_lib()যখন ভার্চুয়ালেনভের মধ্যে থেকে চালানো হচ্ছে তখন পাইথনের সাইট-প্যাকেজগুলি ভ্যুচুয়ালেনভ তৈরি করেছিল এবং ভ্যুচুয়ালেনভের সাইট-প্যাকেজগুলি নয়
পাইওটার ডব্রোগোস্ট

3
@ পাইওটর এটি সম্ভবত ডিস্টুয়েলস.সাইকনফিগের একটি বাগ ছিল। প্রত্যাশার সাথে সাথে আমি অভ্যন্তরীণ সাইট-প্যাকেজগুলি পেয়েছি tested
তোবু

লিনাক্সে একটি ভার্চুয়ালেনভে পাইথন ২. installed ইনস্টল করেও পরীক্ষা করা হয়েছে এবং ডিস্ট্রু.সিসকনফিগ পদ্ধতিটি পাইথনের সাইট-প্যাকেজগুলি পেতে ভাল কাজ করে।
রিচভেল

12

এটি আমার পক্ষে কাজ করে। এটি আপনাকে ডিস্ট-প্যাকেজ এবং সাইট-প্যাকেজ ফোল্ডার উভয়ই পেতে পারে। যদি ফোল্ডারটি পাইথনের পথে না থাকে তবে এটি যাইহোক আপনাকে খুব ভাল করবে না।

import sys; 
print [f for f in sys.path if f.endswith('packages')]

আউটপুট (উবুন্টু ইনস্টলেশন):

['/home/username/.local/lib/python2.7/site-packages',
 '/usr/local/lib/python2.7/dist-packages',
 '/usr/lib/python2.7/dist-packages']

2
গৃহীত উত্তর, প্রস্তাবিত উপায়, তাই আপনি বলতে হবে কেন পুলিশের উত্তম, যেহেতু এটি একটি হ্যাক একটি বিট
CharlesB

একটি হ্যাক সঙ্গে ভুল কি? ;) আপনি ইন্টারেক্টিভভাবে কাজ করছেন কিনা তা সহজ এবং বোঝা সহজ এবং স্মরণযোগ্য।
just_an_old_guy

11

এটি "লো-টেক" প্রকৃতির কারণে ভার্চুয়াল পরিবেশের মধ্যে এবং বাইরে সমস্ত বিতরণে কাজ করা উচিত। ওএস মডিউলটি সর্বদা 'সাইট-প্যাকেজগুলি' এর মূল ডিরেক্টরিতে থাকে

import os; print(os.path.dirname(os.__file__) + '/site-packages')

সাইট-প্যাকেজগুলিতে ডির পরিবর্তন করতে আমি নীচের উপন্যাসটি ব্যবহার করব (* নিক্স সিস্টেমে):

alias cdsp='cd $(python -c "import os; print(os.path.dirname(os.__file__))"); cd site-packages'

10

get_python_libইতিমধ্যে উল্লিখিত ফাংশনের একটি অতিরিক্ত নোট : কিছু প্ল্যাটফর্মে প্ল্যাটফর্ম নির্দিষ্ট মডিউলগুলির জন্য বিভিন্ন ডিরেক্টরি ব্যবহার করা হয় (যেমন: মডিউলগুলির সংকলন প্রয়োজন)। আপনি যদি plat_specific=Trueফাংশনটি পাস করেন তবে প্ল্যাটফর্ম নির্দিষ্ট প্যাকেজগুলির জন্য সাইট প্যাকেজগুলি পাবেন।




3

পুরানো প্রশ্নের উত্তর। তবে এজন্য আইপিথন ব্যবহার করুন।

pip install ipython
ipython 
import imaplib
imaplib?

এটি ইমামপ্লিব প্যাকেজ সম্পর্কে নিম্নোক্ত আউটপুট দেবে -

Type:        module
String form: <module 'imaplib' from '/usr/lib/python2.7/imaplib.py'>
File:        /usr/lib/python2.7/imaplib.py
Docstring:  
IMAP4 client.

Based on RFC 2060.

Public class:           IMAP4
Public variable:        Debug
Public functions:       Internaldate2tuple
                        Int2AP
                        ParseFlags
                        Time2Internaldate

1
এটি সাইট-প্যাকেজ ডিরেক্টরি নয়, তবে প্যাকেজটি ইনস্টল করা ডিরেক্টরি। এটি কেবল তখনই সহায়ক যদি আপনি আইপিথন ব্যবহার করেন এবং প্রোগ্রামালিভাবে কোনও ইনস্টল ডিরেক্টরি পাওয়ার পক্ষে না হয়ে থাকেন।
দানিয়েলন্দরউড

3

পাইপের ইনস্টল অবস্থান নির্ধারণ করার জন্য আপনার এই আদেশটি চেষ্টা করা উচিত

পাইথন 2

pip show six | grep "Location:" | cut -d " " -f2

পাইথন 3

pip3 show six | grep "Location:" | cut -d " " -f2

1

আমি যে প্রকল্পে কাজ করছি তার জন্য আমাকে কিছুটা আলাদা করতে হয়েছিল: বেস ইনস্টল উপসর্গের সাথে সম্পর্কিত সাইট-প্যাকেজ ডিরেক্টরিটি সন্ধান করুন। সাইট-প্যাকেজ ফোল্ডারটি থাকলে /usr/lib/python2.7/site-packagesআমি সেই /lib/python2.7/site-packagesঅংশটি চাইতাম । আমি প্রকৃতপক্ষে যেখানে site-packagesছিল সেখানে সিস্টেমগুলির মুখোমুখি হয়েছিল/usr/lib64 সেগুলির এবং গ্রহণযোগ্য উত্তরগুলি systems সিস্টেমে কার্যকর হয়নি।

চিটারের উত্তরের মতো, আমার সমাধানটি ডিস্টুটিলসের সাহসের গভীরে উঁকি দেয়, এমন পথটি খুঁজে পায় যা আসলে ভিতরে passedুকে পড়ে setup.py। এটা বোঝার জন্য এমন ব্যথা হয়েছিল যে আমি চাই না যে কাউকে আবার কখনও এটি বের করতে হবে।

import sys
import os
from distutils.command.install import INSTALL_SCHEMES

if os.name == 'nt':
    scheme_key = 'nt'
else:
    scheme_key = 'unix_prefix'

print(INSTALL_SCHEMES[scheme_key]['purelib'].replace('$py_version_short', (str.split(sys.version))[0][0:3]).replace('$base', ''))

ওই জাতীয় কিছু প্রিন্ট করা উচিত /Lib/site-packagesবা /lib/python3.6/site-packages


-2

যদি এটি ইতিমধ্যে যুক্ত হয় তবে PYTHONPATHআপনিও এর মতো কিছু করতে পারেন

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