अजगर की साइट-संकुल निर्देशिका क्या है?


119

निर्देशिका site-packagesका उल्लेख विभिन्न पायथन संबंधित लेखों में किया गया है। यह क्या है? इसे कैसे उपयोग करे?

जवाबों:


72

site-packagesमैन्युअल रूप से निर्मित पायथन पैकेज की लक्ष्य निर्देशिका है। जब आप स्रोत से पायथन पैकेज बनाते हैं और स्थापित करते हैं ( डिस्टिल्स का उपयोग करके , संभवतः निष्पादित करके python setup.py install), तो आप site-packagesडिफ़ॉल्ट रूप से इंस्टॉल किए गए मॉड्यूल पाएंगे ।

मानक स्थान हैं:

  • यूनिक्स (शुद्ध) 1 :prefix/lib/pythonX.Y/site-packages
  • यूनिक्स (गैर-शुद्ध): exec-prefix/lib/pythonX.Y/site-packages
  • खिड़कियाँ: prefix\Lib\site-packages

1 शुद्ध का मतलब है कि मॉड्यूल केवल पायथन कोड का उपयोग करता है। गैर-शुद्ध में C / C ++ कोड भी हो सकता है।

site-packagesपायथन खोज पथ के डिफ़ॉल्ट भाग से है , इसलिए वहां स्थापित मॉड्यूल को बाद में आसानी से आयात किया जा सकता है।


उपयोगी पढ़ने


10
स्थान हुआ /usr/local/lib/python3.6/site-packagesubuntu पर
— Mehmet

मैं इसके साथ Gentoo सिस्टम देखा है lib64!
— MultipleMonomials

2
क्या कोंडा या पाइप साइट-संकुल में स्थापित होते हैं, या केवल मैन्युअल रूप से निर्मित संकुल?
— मोनिका हेडडेक

2
वास्तव में दिलचस्प सवाल यह है: यह निर्देशिका क्यों? क्यों नहीं बस स्थापित करने के लिए /usr/lib/python3.6?
— टॉर्स्टन ब्रॉन्गर

40

जब आप --userपाइप के साथ विकल्प का उपयोग करते हैं , तो पैकेज वैश्विक फ़ोल्डर के बजाय उपयोगकर्ता के फ़ोल्डर में स्थापित हो जाता है और आपको व्यवस्थापक विशेषाधिकारों के साथ पाइप कमांड चलाने की आवश्यकता नहीं होगी।

उपयोगकर्ता के संकुल फ़ोल्डर का स्थान उपयोग करके पाया जा सकता है:

python -m site --user-site

यह कुछ इस तरह मुद्रित करेगा:

C:\Users\%USERNAME%\AppData\Roaming\Python\Python35\site-packages

जब आप --userपाइप के साथ विकल्प का उपयोग नहीं करते हैं , तो पैकेज दिए गए वैश्विक फ़ोल्डर में स्थापित हो जाता है:

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

यह कुछ इस तरह मुद्रित करेगा:

['C:\\Program Files\\Anaconda3', 'C:\\Program Files\\Anaconda3\\lib\\site-packages'

नोट: ऊपर मुद्रित मूल्य विंडोज 10 पर एनाकोंडा के साथ हैं। 4. डिफॉल्ट्स के साथ स्थापित।


24

साइट-पैकेज सिर्फ वह स्थान है जहां पायथन अपने मॉड्यूल स्थापित करता है।

"इसे ढूंढने" की आवश्यकता नहीं है, अजगर को पता है कि इसे स्वयं कहां से खोजना है, यह स्थान हमेशा PYTHONPATH (sys.path) का हिस्सा है।

प्रोग्रामेटिक रूप से आप इसे इस प्रकार पा सकते हैं:

import sys
site_packages = next(p for p in sys.path if 'site-packages' in p)
print site_packages

'/Users/foo/.envs/env1/lib/python2.7/site-packages'


3
संभवतः साइट आयात करना आसान है तो site.getitepackages ()
— JSharm

1
सभी पायथन वितरण नहीं हैं site-packages, और यह उठाएंगे StopIteration। उदाहरण के लिए, डेबियन (और उबंटू) को dist-packagesअपने वितरित मॉड्यूल को स्थापित करना होगा।
— टी

यदि आप virtualenv का उपयोग करते हैं और वैश्विक पैकेज विरासत में नहीं मिलते हैं तो यह हमेशा काम करेगा। मैं एक virtualenv बिना कोड कभी नहीं
— एंथनी पेरोट
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.