python कैसे पिप करने के लिए "सीसी" पर्यावरण चर सम्मान



installation pip (1)

ऐसा लगता है कि आपके पास सिस्टम बी पर कंपाइलर उपकरण हैं, इसलिए एक विकल्प आपके सिस्टम पर स्थानीय उपकरण का उपयोग करके अजगर को फिर से बनाना होगा और इसके बजाय इसका उपयोग करना होगा।

यदि आप केवल आपके सिस्टम पर अपने उपयोगकर्ता के लिए ऐसा कर रहे हैं, तो आप इसे अपने उपयोगकर्ता की होम डाइरेक्टरी में भी इसे पूरी तरह से बाहर रखने के लिए स्थापित कर सकते हैं, और उसके बाद अपने वातावरण का उपयोग करने के लिए इसे स्थापित कर सकते हैं। या virtualenv का उपयोग करें

आप आसानी से पर्याप्त रूप से स्थापित एक नया पायथन प्राप्त कर सकते हैं और बना सकते हैं। लिनक्स पर अजगर 3.5.1 के लिए उदाहरण के लिए:

cd
mkdir src
mkdir -p local/python351
cd src
wget https://www.python.org/ftp/python/3.5.1/Python-3.5.1.tgz
tar -xf Python*.tgz
cd Python-3.5.1
./configure --prefix ~/local/python351
make
make install

https://code.i-harness.com

मैं एक बहुत ही जटिल वातावरण में काम कर रहा हूं जहां विभिन्न मशीनों को विभिन्न वितरित फाइल सिस्टम तक पहुंच है।

  • मशीन A को फाइलसिस्टम X तक पहुंच है और इसका उपयोग फाइलसिस्टम Y पर सॉफ़्टवेयर इंस्टॉल करने के लिए किया जाता है।
  • मशीन B को फाइलसिस्टम Y तक पहुंच है, लेकिन X नहीं है

मैं मशीन B पर काम कर रहा हूं, और मैं खुद को अजगर का उपयोग करके बहुत कुछ ढूंढता हूं। कभी-कभी, मुझे पहले से इंस्टॉल किए गए पैकेजों की आवश्यकता होती है, इसलिए मैं स्थानीय स्तर पर उन्हें स्थापित pip install PKGXYZ --user लिए pip install PKGXYZ --user का उपयोग करता हूं। यह आम तौर पर अच्छी तरह से काम करता है, लेकिन एक पकड़ है

अजगर पैकेज distutils और इसके बंदर-पैच व्युत्पन्न setuptools जो pip द्वारा उपयोग किया जाता है setuptools कार्यक्षमता का उपयोग संकलक संस्करण, पथ, और somesuch पकड़ पाने के लिए। इसके लिए, वे आंतरिक Makefile उपयोग करते हैं जिसका इस्तेमाल अजगर को स्थापित करने के लिए किया गया था। हालांकि यह आम तौर पर एक अच्छी रणनीति है, यह मेरी ठोस सेटअप के साथ विफल हो जाता है, क्योंकि अजगर में पथ, फाइल सिस्टम X को इंगित करें Makefile बिंदु, जिसके पास मेरे मशीन B पर पहुंच नहीं है I इसलिए, मैं खुद को pip --no-clean विकल्प का उपयोग करके और उन संकुलों के setup.py को हैक कर रहा हूं जिन्हें मैं स्निपेट्स के साथ स्थापित करना चाहता हूं:

import re
import sys
import os
cc = os.getenv("CC")
if not cc:
    print("please set CC environment variable!")
    exit(0)
from distutils.sysconfig import get_config_vars
for k,v in get_config_vars().iteritems():
    try:
        if "fsX" in v:
            newv = re.sub(r'/fsX/[^ ]*/g[c+][c+]',cc,v)
            get_config_vars()[k] = newv
    except TypeError:
        pass

जैसे कि मैं CC पर्यावरण चर का उपयोग कर अजगर Makefile से कंपाइलर पथ की डिफ़ॉल्ट सेटिंग्स को ओवरराइट कर सकता हूं जो मेरे मशीन पर काम करता है।

हालांकि, यह एक बदसूरत हैक है निश्चित रूप से ऐसा करने का एक अच्छा तरीका होना चाहिए और कुछ पर्यावरण चर, कॉन्फ़िग फ़ाइल या कमांड लाइन ऑप्शन के जरिए कुछ अलग संकलक का इस्तेमाल करना pip बनाते हैं। या वहाँ है?





distutils