2012-12-31 40 views
5

में वितरण स्थापित करना मैं अपने ओएस एक्स मशीन पर पाइथन 3.3 के अंतर्निहित "venv" मॉड्यूल के साथ उठने और चलाने की कोशिश कर रहा हूं। मैंने होमब्रू का उपयोग कर पायथन 3.3 स्थापित किया है।पायथन 3.3 venv (ओएस एक्स/होमब्रू)

डॉक्स के अनुसार, बनाने और आभासी वातावरण स्विचिंग काम करता है के रूप में आप उम्मीद थी:

$ python3 -m venv myvenv 
$ source myvenv/bin/activate 

और मैं कुछ इस तरह जांच की है:

$ echo "YEAH = 'YEAH!'" > myvenv/lib/python3.3/site-packages/thingy.py 
$ python 
>>> import thingy 
>>> print(thingy.YEAH) 
'YEAH!' 

लेकिन जब मैं स्थापित करने का प्रयास वितरित करें, यह बस उचित जगह पर नहीं जाएगा। किसी कारण के लिए, यह /usr/local/lib/python3.3/site-packages/ में स्थापित करने के लिए है, जो निम्नलिखित संदेश के साथ विफल रहता है की कोशिश कर रहा पर जोर:

No setuptools distribution found 
running install 
Checking .pth file support in /usr/local/lib/python3.3/site-packages/ 
/Users/victor/myvenv/bin/python -E -c pass 
TEST FAILED: /usr/local/lib/python3.3/site-packages/ does NOT support .pth files 
error: bad install directory or PYTHONPATH 

You are attempting to install a package to a directory that is not 
on PYTHONPATH and which Python does not read ".pth" files from. The 
installation directory you specified (via --install-dir, --prefix, or 
the distutils default setting) was: 

    /usr/local/lib/python3.3/site-packages/ 

and your PYTHONPATH environment variable currently contains: 

    '' 

यह परवाह किए बिना होता है अगर मैं distribute_setup.py का उपयोग कर या स्रोत वितरण सीधे का उपयोग कर स्थापित करने का प्रयास। मैंने --prefix=/Users/victor/myenv का उपयोग करने का भी प्रयास किया है, लेकिन यह अभी भी मेरे "वैश्विक" साइट-पैकेज में सब कुछ डालने का प्रयास करता है।

मुझे यह नहीं पता कि यह क्यों होता है, लेकिन यह मेरी दो मशीनों पर लगातार है। ध्यान दें कि sys.prefix सही पथ (वर्चुअल वातावरण) की रिपोर्ट करता है।

क्या यह होमब्रू के साथ एक समस्या है? ओएस एक्स? पायथन 3.3? venv? मेरे?

+2

एक venv में 0.6.33 वितरित करना स्थापित करना मेरे लिए सिर्फ python.org 3.3.0 से python.org 64-/32-बिट इंस्टॉलर से 10.8 पर ठीक है। –

+1

होमब्री की सुविधा के लिए मैंने पूरी तरह से python.org का उपयोग बंद कर दिया था। लेकिन उनके इंस्टॉलर भी मेरे लिए काम करता है। तो, शायद यह संभवतः होमब्रू के पाइथन को स्थापित करने का तरीका है। – vicvicvic

+1

एफडब्ल्यूआईडब्ल्यू, यह मैकपॉर्ट्स python33 पोर्ट के साथ भी ठीक काम करता है। तो, हाँ, सबसे अधिक संभावना है कि होमब्री रेसिपी में कुछ दोष। –

उत्तर

3

यह होमब्रू के साथ एक मुद्दा रहा है, हाँ, लेकिन यह अब https://github.com/mxcl/homebrew/commit/0b50110107ea2998e65011ec31ce45931b446dab के बाद से काम कर रहा है।

$ brew update 
$ brew rm python3 #if you have installed it before 
$ brew install python3 
$ cd /tmp 
$ which python3 
    /usr/local/bin/python3 
$ python3 -m venv myvenv 
$ source myvenv/bin/activate 
$ wget http://python-distribute.org/distribute_setup.py # may need brew install wget 
$ python3 distribute_setup.py 
    ... 
    Finished processing dependencies for distribute==0.6.45 
    After install bootstrap. 
    Creating /private/tmp/myvenv/lib/python3.3/site-packages/setuptools-0.6c11-py3.3.egg-info 
    Creating /private/tmp/myvenv/lib/python3.3/site-packages/setuptools.pth 

आप देखते हैं कि/tmp निर्देशिका में सफलतापूर्वक स्थापित वितरित करते हैं।

1

यह इसलिए होता है क्योंकि homebrew स्थापित करता distutils कॉन्फ़िग फ़ाइल:

$ brew cat python3 | grep "Tell distutils" -A5 
    # Tell distutils-based installers where to put scripts 
    (prefix/"Frameworks/Python.framework/Versions/#{VER}/lib/python#{VER}/distutils/distutils.cfg").write <<-EOF.undent 
     [install] 
     install-scripts=#{scripts_folder} 
     install-lib=#{site_packages} 
    EOF 

$ mv ~/.local/Frameworks/Python.framework/Versions/3.3/lib/python3.3/distutils/distutils.cfg ~/tmp/ 
$ cat ~/tmp/distutils.cfg 
[install] 
install-scripts=/Users/gatto/.local/share/python3 
install-lib=/Users/gatto/.local/lib/python3.3/site-packages 
$ . venv/bin/activate 
(venv) $ python distribute-0.6.36/distribute_setup.py 
(venv) $ ls venv/lib/python3.3/site-packages/ 
distribute-0.6.36-py3.3.egg easy-install.pth setuptools-0.6c11-py3.3.egg-info setuptools.pth 

देखें bugs.python.org पर "distutils.cfg Can Break venv" मुद्दा।

+1

होमब्रू ने इस distutils.cfg को एक और मानक अनुरूप तरीके से बदल दिया और अब केवल उपसर्ग निर्दिष्ट करता है। https://github.com/mxcl/homebrew/commit/0b50110107ea2998e65011ec31ce45931b446dab –