Qual è l'equivalente in stile Python degli ambienti virtuali ma per un account utente su Mac OS?

1

Voglio installare diversi pacchetti e software, ma non mi piace davvero l'idea di eseguire un comando sudo per installare qualcosa.

Uso Homebrew e MacPorts per ottenere qualsiasi app di cui ho bisogno, ma è possibile installare applicazioni, librerie e pacchetti specifici per un ambiente virtuale in stile python e se penso che non voglio che questi pacchetti entrino in collisione, posso solo eliminare un ambiente virtuale o semplicemente utilizzare un ambiente diverso?

Per favore fatemi sapere se la domanda non ha senso. Da quando ho iniziato ad utilizzare ambienti virtuali in Python, non posso immaginare di non lavorare con ambienti virtuali e mi chiedevo se ci fosse qualcosa di equivalente o un modello di installazione che la gente consigliava di imitare quel comportamento?

ps > So che c'è anche Fink ma non la uso.

Versione 2:
Penso di aver bisogno di verificare ulteriormente la mia domanda.
Uso già virtualenvwrapper e faccio tutto ciò che riguarda Python in ambienti virtuali. La domanda è indipendente da Python. E 'solo che virtualenv mi ha ispirato a vedere se c'era un equivalente, account-utente-wide.

Quello che ho pensato sarebbe stato fantastico, quando ho provato a installare libjpeg, PIL, FreeType2, Pillow, ecc.
Volevo installare queste librerie o pacchetti come libjpeg, FreeType2 in un ambiente virtuale del sistema operativo. Se ritenessi che la versione Homebrew di queste installazioni di librerie non fosse soddisfacente, avrei potuto lavorare in un ambiente diverso o provare altre procedure di installazione e passare da un ambiente all'altro delle applicazioni installate.

Quindi, mi stavo chiedendo se esiste qualcosa del genere per OS X o ci sono alcuni trucchi che si possono fare per emularlo?

    
posta 22.11.2011 - 05:39
fonte

2 risposte

2

Se sei morto impostato su quel paradigma, allora le macchine virtuali sembrano essere un logico passo successivo, no? Prendi Virtualbox e fai il tuo lavoro in una VM.

Si noti tuttavia che i gestori di pacchetti risolvono molti problemi con gli indirizzi virtualenv. Le librerie che hai citato non cambieranno radicalmente le interfacce, sono versioni stabili.

Sono libs python che sono le più volatili, non cose come FreeType. Vorrei solo usare qualunque versione X11 stia usando.

    
risposta data 30.05.2012 - 00:07
fonte
0

Non sono sicuro di aver capito cosa stai chiedendo ma, se stai chiedendo di creare ambienti virtuali Python usando virtualenv , allora sei già lì. Il vantaggio dell'utilizzo di virtualenv è che crea un'istanza Python autonoma all'interno della directory dell'ambiente virtuale creata. Quando usi i comandi python e pip all'interno della directory virtualenv bin (che è ciò che accade quando activate virtualenv), qualsiasi pacchetto Python che installi, sia con python setup.py o pip install o anche easy_install sono installati in una directory site-library all'interno dell'ambiente virtuale e non hanno alcun effetto su altre installazioni Python sul tuo sistema. La directory dell'ambiente virtuale e il suo contenuto sono soggetti alle normali autorizzazioni del file system in modo che tu possa crearlo senza la necessità di usare sudo (ad esempio, se lo crei da qualche parte all'interno della tua home directory) e puoi impostare i permessi dei file per controllare se altri utenti hanno accesso al virtualenv. A meno che non si usi l'opzione --no-site-packages durante la creazione di virtualenv, virtualenv avrà accesso a pacchetti esistenti o nuovi aggiunti all'istanza di Python di base (il Python di sistema o l'altro usato per creare il virtualenv, per impostazione predefinita, l'istanza di Python che virtualenv è stato originariamente installato in). Ma i pacchetti installati localmente nell'ambiente virtuale non influenzano l'istanza di Python originale. Se hai usato virtualenv --no-site-packages , nessun pacchetto al di fuori della libreria standard di Python sarà "ereditato" dall'ambiente virtuale.

Puoi usare virtualenv in combinazione con gestori di pacchetti di terze parti come MacPorts, Homebrew o Fink (includono virtualenv ports / recipe / packages) ma all'interno di un ambiente virtuale dovrai gestire tu stesso i pacchetti Python locali , presumibilmente usando pip installato all'interno di ogni ambiente virtuale. virtualenv non fornisce un meccanismo per la gestione di entità che non sono pacchettizzate utilizzando l'imballaggio in stile distroils standard di Python, cioè app non-Python e librerie C.

    
risposta data 22.11.2011 - 09:06
fonte

Leggi altre domande sui tag