का सम्मान करने के लिए कैसे करें मैं एक बहुत ही मजबूत वातावरण में काम कर रहा हूं जहां विभिन्न मशीनों के पास विभिन्न वितरित फ़ाइल सिस्टम तक पहुंच है।पीपी को "सीसी" पर्यावरण परिवर्तनीय
- मशीन
A
X
फाइल सिस्टम के लिए पहुँच गया है और फाइल सिस्टमY
पर सॉफ़्टवेयर स्थापित करने के लिए प्रयोग किया जाता है। - मशीन
B
फाइल सिस्टमY
तक पहुंच है, लेकिनX
नहीं है।
मैं मशीन B
पर काम कर रहा हूं, और मैं खुद को पाइथन का उपयोग कर पाता हूं। कभी-कभी, मुझे उन पैकेजों की आवश्यकता होती है जिन्हें पूर्वस्थापित नहीं किया जाता है, इसलिए मैं उन्हें स्थानीय रूप से स्थापित करने के लिए pip install PKGXYZ --user
का उपयोग करता हूं। यह आमतौर पर अच्छी तरह से काम करता है, लेकिन एक पकड़ है।
अजगर संकुल distutils
और उसके बंदर समझौता व्युत्पन्न setuptools
जो pip
द्वारा उपयोग किया जाता distutils.sysconfig
कार्यक्षमता का उपयोग संकलक संस्करणों, रास्तों में से काबू पाने, और somesuch करने के लिए। इसके लिए, वे आंतरिक Makefile
का उपयोग करते हैं जिसका उपयोग पायथन स्थापित करने के लिए किया गया था। हालांकि यह आम तौर पर एक अच्छी रणनीति है, यह मेरे कंक्रीट सेटअप के साथ विफल रहता है, क्योंकि पाइथन आंतरिक Makefile
में पथ फाइल सिस्टम X
पर इंगित करते हैं, जिनके पास मेरी मशीन B
पर पहुंच नहीं है।
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
वातावरण चर का उपयोग कर सकते हैं: इसलिए, मैं अपने आप को pip
की --no-clean
विकल्प का उपयोग करने और संकुल मैं इस तरह के टुकड़े के साथ स्थापित करना चाहते हैं के setup.py
हैकिंग लगता है पाइथन Makefile
से कंपाइलर पथ जो मेरी मशीन पर काम करता है।
हालांकि, यह एक बदसूरत हैक है। ऐसा करने के लिए निश्चित रूप से एक अच्छा तरीका होना चाहिए और pip
कुछ पर्यावरण चर, कॉन्फ़िगरेशन फ़ाइल या कमांड लाइन विकल्प के माध्यम से कुछ अलग कंपाइलर का उपयोग करना चाहिए। या वहाँ है?
इस प्रतिक्रिया के लिए धन्यवाद। एक कस्टम पायथन संस्करण बनाने के दौरान निश्चित रूप से एक विकल्प है, मैं वास्तव में एक पैकेज लिख रहा हूं जो कि पाइथन पैकेज पर निर्भर करता है जिसे प्राप्तकर्ताओं द्वारा स्थापित करने की आवश्यकता होगी, इसलिए मुझे इस मुद्दे के लिए कुछ आसान निर्देशों को प्रदान करने की आवश्यकता होगी। मेरी राय में, अपने स्वयं के पायथन संस्करण को संकलित करना इस मुद्दे के लिए बहुत अधिक है। – carsten
और सभी प्राप्तकर्ताओं के पास एक ही समस्या होगी, कि उनके अजगर प्रतिष्ठान अब अनुपलब्ध उपकरण के साथ बनाए गए थे? यह मेरे लिए थोड़ा पागल लगता है, और शायद अगर आपकी कंपनी में मशीनों को कॉन्फ़िगर किया गया है तो आपको इसे ठीक करने में देखना चाहिए, क्योंकि ऐसा लगता है कि भविष्य में आपको भविष्य में और भी समस्याएं हो सकती हैं। क्या आप शायद शेड्यूल किए गए पायथन अपग्रेड में बदलाव नहीं कर सकते? – daphtdazz
हां, सभी प्राप्तकर्ताओं के पास एक ही समस्या होगी। और हाँ, यह थोड़ा पागल है।और हां, सेटअप का एक फिक्स चल रहा है, लेकिन तैनात किए जाने वाले महीनों के आदेश पर होगा, जबकि जिस सॉफ्टवेयर पर मैं काम कर रहा हूं वह सप्ताहों के आदेश पर तैनात किया जाएगा। तो हमें एक कार्यकारी मध्यवर्ती समाधान की आवश्यकता है। – carsten