2012-12-31 15 views
5

Ho cercato di alzarsi e correre con il modulo built-in "venv" di Python 3.3 sulla mia macchina OS X. Ho installato Python 3.3 usando Homebrew.Installazione di distribuire in Python 3.3 venv (OS X/Homebrew)

Come per la documentazione, la creazione e il passaggio ambiente virtuale funziona come ci si aspetta:

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

E ho provato qualcosa di simile:

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

Ma quando provo ad installare distribuire, semplicemente non andrà nel posto giusto. Per qualche ragione, si ostina a cercare di installare nella /usr/local/lib/python3.3/site-packages/, che non riesce con i seguenti messaggi:

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: 

    '' 

Questo accade a prescindere se cerco di installare utilizzando distribute_setup.py o utilizzando direttamente la distribuzione dei sorgenti. Ho anche provato a usare --prefix=/Users/victor/myenv ma cerca ancora di mettere tutto nei miei pacchetti "globali" del sito.

non riesco a capire perché questo accade, ma è coerente su due delle mie macchine. Notare che sys.prefix segnala il percorso corretto (l'ambiente virtuale).

È questo un problema con Homebrew? OS X? Python 3.3? venv? Me?

+2

Installazione distribuire 0.6.33 in un venv funziona bene per me con un python.org 3.3.0 dal python.org 64/32-bit programma di installazione su 10,8. –

+1

Avevo completamente smesso di usare python.org per la comodità di Homebrew. Ma il loro programma di installazione funziona anche per me. Quindi, probabilmente è un problema con il modo di installazione di Python di Homebrew. – vicvicvic

+1

FWIW, funziona anche bene con la porta python33 di MacPorts. Quindi, sì, molto probabilmente qualche difetto in una ricetta Homebrew. –

risposta

3

Questo è stato un problema con Homebrew, sì, ma si sta lavorando ora, poiché 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 

Si vede che distribuire installare correttamente nella directory/tmp.

1

Questo accade perché homebrew installa distutils file di configurazione:

$ 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 

Vedere "distutils.cfg Can Break venv" problema a bugs.python.org.

+1

Homebrew ha cambiato questo distutils.cfg in un modo più conforme e ora specifica solo il prefisso. https://github.com/mxcl/homebrew/commit/0b50110107ea2998e65011ec31ce45931b446dab –