2012-11-14 17 views
7

फ़ाइलों .pyc बनाने से अजगर को रोकने के लिए, पहले से ही अजगर स्क्रिप्ट का मामला (या जादुई संख्या है, तो आप करेंगे) में एक तरह से वहाँ है?बंद करो अजगर कुटिया में pyc फ़ाइलों को पैदा करने से

काम नहीं:

#!/usr/bin/env python -B 
+1

@VajkHermecz, कोई मेरे सवाल बहुत है अधिक विशिष्ट। –

+0

हाँ, माफ करना संबंधित एक बेहतर शब्द होगा ... srry –

+1

फिर से खोलने के लिए वोटिंग क्योंकि इसका डुप्लिकेट से अलग प्रभाव पड़ता है। – o11c

उत्तर

4

हाँ, यदि और केवल यदि, हम (/ bin/श के लिए) मान पायथन कार्यक्रम कुछ हद तक एक POSIX संगत प्रणाली में चलता है, यह काम करेगा:

(सुधार glglgl से इनपुट के आधार पर)

#!/bin/sh 
"exec" "python" "-B" "$0" "[email protected]" 

# The rest of the Python program follows below: 
+0

नोट: बाद में http://stackoverflow.com/a/9057699/193892 साथ सुधार –

+0

महान लग रहा है! '" 'रों खोल लिए हैं और अजगर ... – glglgl

+1

द्वारा नजरअंदाज कर दिया लेकिन यह मैं वाक्य रचना पर प्रकाश डाला ... – glglgl

3

ओह, नहीं। Shebang सामान निष्पादन योग्य और एक पैरामीटर देने के लिए सीमित है।

तो env के बजाय एक तर्क -B साथ python और दो तर्क के रूप में वर्तमान फ़ाइल के रूप में दिया फ़ाइल के साथ python -B निष्पादित करने के लिए कोशिश करता है।

मैं वांछित लक्ष्य को प्राप्त करने के लिए एक रास्ता नहीं दिख रहा।

+2

मजाकिया हिस्सा यह है कि पायथन विंडोज लॉन्चर इस सीमा के बारे में नहीं जानता है और विकल्पों को सही ढंग से पास करता है। तो खिड़की पर एक बार अजगर के लिए बेहतर काम करता है; आत्म करने के लिए) – lqc

6

यह बजाय वह धमाके में सीधे अपने अजगर interperter पथ डाल env का उपयोग करके भी संभव है।

#!/usr/bin/python -B 

बेशक इसका मतलब है कि आप env का उपयोग करने के कुछ पोर्टेबिलिटी लाभों को खो देते हैं। wikipedia Shebang page पर env के साथ इस समस्या की चर्चा है। वे अपने env उदाहरणों में से एक के रूप में अजगर का उपयोग करें।

4

env के लिए आदमी पृष्ठ के अनुसार, आप वातावरण चर सेट करने के लिए name=value पारित कर सकते हैं। PYTHONDONTWRITEBYTECODE वातावरण चर अजगर का कारण बनता है [सह] फ़ाइलें (python को -B ध्वज के रूप में ही) .py नहीं लिखने के लिए। तो

#!/usr/bin/env PYTHONDONTWRITEBYTECODE=1 python 

का उपयोग कर चाल करना चाहिए।

संपादित करें:

मैं एक साधारण अजगर स्क्रिप्ट के साथ इस परीक्षण किया:

#!/usr/bin/env PYTHONDONTWRITEBYTECODE=1 python 
print 1 

तो

$chmod +x test.py 
$./test.py 
1 
$ls 
test.py 

(लेकिन नहीं test.pyc)

+1

मेरे लिए स्क्रिप्ट बस लटकती है ... –

+0

क्या यह सिर्फ 'पायथन-बी script.py' के साथ काम करता है? मैंने अभी एक साधारण लिपि का परीक्षण किया, और यह मेरे लिए ठीक काम करना प्रतीत होता था। – asmeurer

+1

मुझे भी। यह काम नहीं लग रहा है। –