2008-10-30 11 views
24

मैं पाइथन में विकास करते समय वर्चुअलएन्व का उपयोग कर रहा हूं। मुझे --no-site-packages विकल्प का उपयोग करके एक पृथक विकास पर्यावरण का विचार पसंद है, लेकिन पीईजीटीके ऐप के विकास के दौरान ऐसा करना थोड़ा मुश्किल हो सकता है। पीजीजीटीके मॉड्यूल डिफ़ॉल्ट रूप से उबंटू पर स्थापित होते हैं, और मैं सिस्टम पर कहीं और स्थित विशिष्ट मॉड्यूल के बारे में जागरूक वर्चुअलनव (के साथ --no-site-packages) बनाना चाहता हूं।उबंटू पर वर्चुअलेंव कोई साइट-पैकेज

ऐसा करने का सबसे अच्छा तरीका क्या है? या मुझे बस इसे चूसना चाहिए और --no-site-packages विकल्प को छोड़ना चाहिए?

उत्तर

34
$ virtualenv --no-site-packages --python=/usr/bin/python2.6 myvirtualenv 
$ cd myvirtualenv 
$ source bin/activate 
$ cd lib/python2.6/ 
$ ln -s /usr/lib/pymodules/python2.6/gtk-2.0/ 
$ ln -s /usr/lib/pymodules/python2.6/pygtk.pth 
$ ln -s /usr/lib/pymodules/python2.6/pygtk.py 
$ ln -s /usr/lib/pymodules/python2.6/cairo/ 
$ python 
>>> import pygtk 
>>> import gtk 
+8

यह मुझे सही रास्ते पर रखता है, लेकिन कुछ हद तक उबंटू 11.10 द्वारा बदल गया है। उबंटू 11.10 में पाइथन 2.7 के लिए, कुछ और इस तरह: ln -sf /usr/lib/python2.7/dist-packages/{glib ,gobject,cairo,gtk-2.0,pygtk.py,pygtk.pth} lib/python2 .7/साइट-पैकेज – keturn

+2

नोट: gtk फ़ोल्डर्स और पीएचटी फ़ाइलों को lib/python2.6/साइट-पैकेज में जाना है, lib/python2.6 नहीं। देखें: http://stackoverflow.com/questions/3580520/python-virtualenv-gtk-2-0 – jmanning2k

+2

env var का उपयोग करने के लिए केटर्न संस्करण में एक छोटा सा संपादन है: $ ln -sf /usr/lib/python2.7/ dist-packages/{glib, gobject, cairo, gtk-2.0, pygtk.py, pygtk.pth} $ VIRTUAL_ENV/lib/python2.7/साइट-पैकेज –

4

एक तरीका है sys.path का उपयोग करके अपने कोड में पथ जोड़ना।

import sys 

sys.path.append(somepath) 

साइट का उपयोग करने का एक और तरीका है, जो sys.path में जोड़ने के अलावा .pth फ़ाइलों को संसाधित करता है।

import site 

site.addsitedir(sitedir, known_paths=None) 

https://docs.python.org/library/site.html

लेकिन आप शायद अपने सभी संबंधित कोड में जोड़ने के लिए नहीं करना चाहती।

मैंने साइटcustomize.py का उल्लेख कुछ ऐसा करने के लिए किया है, लेकिन कुछ परीक्षणों के बाद मैं इसे काम करने के लिए प्राप्त नहीं कर सका।

यहां उल्लेख किया गया है कि साइटcustomize.py का स्वत: आयात 2.5 में समाप्त हुआ, यदि आपकी 2.5 पर कोशिश नहीं की गई है। (बस फ़ाइल में ऊपर पथ पथ विधियों में से एक जोड़ें और इसे अपने प्रोग्राम चलाने वाली निर्देशिका में छोड़ दें) 2.5 और बाद के उपयोगकर्ताओं के लिए पोस्ट में विधि के आसपास एक कार्य का उल्लेख किया गया है।

http://code.activestate.com/recipes/552729/

1

मैं इस स्थिति में मिल जाए, सिमलिंक, या यहाँ तक विशिष्ट फ़ाइलों (संकुल, मॉड्यूल, एक्सटेंशन) को कॉपी वास्तव में अच्छी तरह से काम करता है।

यह कार्यक्रम को पर्यावरण के अनुकूल बनाने के लिए आवेदन बदलने के बजाए लक्षित वातावरण में चलाने का अनुकरण करने की अनुमति देता है।

AppEngine जैसे कुछ के लिए एक ही सौदा।

+0

ये में पाया जा सकता कर रहे हैं के बारे में अधिक विस्तृत जानकारी है, लेकिन सिमलिंक कहाँ? और मुझे पीजीजीटीके जैसी चीज़ के लिए सिम्लिंक करने की क्या आवश्यकता होगी? –

+0

अपनी साइट-पैकेज से लिंक करें। यहां मेरे उबंटू पर, मेरे पास /usr/lib/python-support/python-gtk2/python2.5/gtk-2.0/gtk है। वहां पहले से ही /var/lib/python-support/python2.5/gtk-2.0/gtk लिंक हैं। एक अच्छी शुरुआत की तरह लगता है, और आपको परीक्षण और त्रुटि की आवश्यकता हो सकती है। लेकिन आप अगली बार इसे सिर्फ स्क्रिप्ट करने में सक्षम होंगे। –

1

बाहर चेक postmkvirtualenv हुक यहाँ स्क्रिप्ट:

https://stackoverflow.com/a/9716100/60247

उस मामले में, वह यह उपयोग कर रहा है PyQt आयात और एक नया virtualenv के बाद पीएं बनाई गई है करने के लिए है, लेकिन आप संकुल में जोड़ सकते हैं कि आपको LIBS की आवश्यकता है।

और वह स्क्रिप्ट को वोट क्योंकि यह शानदार :)

0

है आप virtualenv में प्रासंगिक सिस्टम के अजगर जीटीके-2.0 के लिए लिंक शामिल करना चाहते हैं, तो आप सिर्फ स्थापित करने के लिए उपयोग कर सकते हैं पिप ruamel.venvgtk:

पाइप install ruamel.venvgtk आपने कुछ भी आयात नहीं किया है, लिंक स्थापना के दौरान सेटअप हैं।

यह विशेष रूप से उपयोगी है अगर आप tox उपयोग कर रहे हैं, उस स्थिति में आप केवल निर्भरता (tox के लिए) शामिल करनी होगी:

deps: 
    pytest 
    ruamel.venvgtk 

और एक नव सेटअप python2.7 पर्यावरण शामिल प्रासंगिक लिंक होगा परीक्षण चलाने से पहले।

कैसे लिंक सेटअप this answer