virtualenv-sh er en erstatning for den ærværdige virtualenvwrapper & nbsp; (et sæt af shell-funktioner for at lette anvendelsen af virtualenv).
Kommentarer Developer
Ligesom mange, jeg har brugt virtualenvwrapper årevis, men det er blevet lidt tung over tid. Til sidst fandt jeg mig selv venter for længe på nye skaller til at starte op, selv om jeg havde en tendens til kun at anvende de grundlæggende funktioner.
Dette projekt er et forsøg på at løse dette problem. Jeg lånte de kloge stumper af virtualenvwrapper, kasserede alt, hvad jeg anset dyrt eller bare ikke interessant, og tilføjet en funktion eller to af min egen. Antallet en prioritet for dette projekt er hastighed. Koden er næsten ren shell script, selv om der kan være en eller to kald af standard værktøjer som grep eller sed.
Advaret om, at denne implementering ikke kan være for dig. Jeg kan har fået slippe af med en funktion, som du kunne lide, enten fordi det var dyrt, eller fordi jeg bare ikke bekymrer sig om det. Jeg kan have et uheld kasseret en rettelse eller workaround for nogle miljø, jeg ikke har mødt. Jeg kan have netop introduceret nye fejl (shell er en let sprog at få galt i subtile måder). Fortsæt på egen risiko.
Installation
virtualenv-sh kan installeres med pip eller easy_install. For at bruge det, du har brug for at købe en enkelt shell script i din shell miljø. Som standard pip eller easy_install bør installere den på / usr / local / bin. Hvis du bruger bash eller zsh, bør du importere shell-specifikke script; Ellers kan du prøve den generiske én. Tilføj en af følgende til din shell s init-script (.bashrc, .zshrc etc.):
. /usr/local/bin/virtualenv-sh.bash
. /usr/local/bin/virtualenv-sh.zsh
. /usr/local/bin/virtualenv-sh.sh
Intet andet er påkrævet. Der er kun én miljøvariabel, som du kan bruge til konfiguration, som er WORKON_HOME. Dette er en sti til din samling af virutalenvs; du kan lade det stå tomt for at acceptere standardindstillingen på $ {HOME} /. virtualenvs. Det antages, at virtualenv selv er i din vej.
WORKON_HOME = $ {HOME} /. Virtualenvs
zsh
Hvis du bruger zsh, kan du i stedet bruge prækompileret funktion arkiv for optimal ydelse, selv om dette skal udarbejdes fra kilde på din maskine. Du kan downloade kilden direkte eller prøv:
pip installere --upgrade --no-install virtualenv-sh
cd build / virtualenv-sh
sudo make install
Dette vil finde zsh i din vej, kan du bruge det til at kompilere virtualenv-sh.zwc, og installere det på / usr / local / bin. Du kan nu AutoLoad disse funktioner og initialisere virtualenv-sh. Du kan henvise til afsnittet om funktionen automatisk indlæsning i zsh manual, hvis du ikke er bekendt med denne proces:
# Konfigurere alle virtualenv-sh funktioner til automatisk indlæsning
fpath = (/ usr / local / bin / virtualenv-sh $ fpath)
autoload -w / usr / local / bin / virtualenv-sh
# Kald vigtigste initialisering funktion
virtualenv_sh_init
med
De grundlæggende kommandoer i virtualenv-sh er stort set de samme som virtualenvwrapper. Her er en kort opsummere:
& Nbsp; mkvirtualenv
& Nbsp; Opretter en ny virtual_env i $ WORKON_HOME. Alle argumenter er gået direkte til virtualenv. Den nye virtual_env bliver aktiv. I modsætning virtualenvwrapper, det tager ingen yderligere argumenter.
& Nbsp; rmvirtualenv
& Nbsp; Sletter en eksisterende virtual_env. Hvis dette virtual_env er aktiv i øjeblikket, er det først deaktiveres som en høflighed.
& Nbsp; workon [
& Nbsp; Aktiverer navngivne virtual_env. Hvis en anden virtual_env er aktiv i øjeblikket, vil det først blive deaktiveret. Uden argumenter, vil det opføre de tilgængelige virtual_envs.
& Nbsp; autoworkon
& Nbsp; Indstiller automatisk virtual_env baseret på særlige filer. Se nedenfor.
& Nbsp; deaktivere
& Nbsp; Deaktiverer aktuelle virtual_env (som ved brug virtualenv direkte).
& nbsp; lsvirtualenvs
& Nbsp; Udskriver en liste over de virtual_envs du har oprettet.
& Nbsp; cdvirtualenv [undermappe]
& Nbsp; Ændrer den aktuelle mappe til roden af den aktive virtual_env, eller en undermappe heraf.
& nbsp; lssitepackages
& Nbsp; Viser indholdet af det aktive virtual_env site-pakker mappe.
& Nbsp; cdsitepackages [undermappe]
& Nbsp; Ændrer currect mappe til den ikke-pakker over den aktive virtual_env, eller en undermappe heraf.
Kroge
virtualenv-sh understøtter de samme globale og lokale (per-ENV) kroge som virtualenvwrapper. Globale kroge er filer i $ WORKON_HOME; lokale kroge er filer i $ WORKON_HOME / {virtual_env} / bin. Kroge udføres af sourcing dem i den aktuelle shell kontekst.
& Nbsp; initialisere (global)
& Nbsp; Kaldet i slutningen af virtualenv_sh_init.
& Nbsp; premkvirtualenv, postmkvirtualv, prermvirtualenv, postmkvirtualenv (global)
& Nbsp; Kaldet i starten og slutningen af mkvirtualenv og rmvirtualenv.
& Nbsp; preactivate, postactivate (global, lokal); predeactivate, postdeactivate (lokal, global)
& Nbsp; Kaldet i den angivne omkring aktivering og deaktivering af en virtual_env orden.
Desuden virtualenv-sh giver dig mulighed for dynamisk at registrere funktioner, der skal kaldes, når der udføres kroge:
virtualenv_sh_add_hook
virtualenv_sh_remove_hook
f.eks .:
my_virtualenv_cleanup ()
{
& Nbsp; # Har nogle ting her
}
virtualenv_sh_add_hook postdeactivate my_virtualenv_cleanup
Registrerede krog funktioner udføres altid efter alle globale og lokale krog scripts.
autoworkon
autoworkon er en ny kommando, der er designet til automatisk at opdatere din virtual_env baseret på din nuværende mappe. Bemærk, at der ikke findes nogen standard shell mekanisme til at køre en funktion, når den aktuelle mappe ændringer - og mange skaller ikke har en sådan mekanisme - så installere dette er op til dig. Hvis du bruger zsh, ville vi bruge:
autoload -U add-zsh-hook
add-zsh-hook chpwd autoworkon
Den autoworkon Funktionen gå op filsystemet fra den aktuelle mappe, indtil den enten når roden eller finder et element med navnet ".workon". Hvis dette er en læsbar fil, vil den behandle den første linje som navnet på en virtual_env og aktivere den. Der er et par af særlige regler at huske på:
- Autoworkon stopper altid ved det første .workon den finder. Det er helt rimeligt at have .workon filer på flere punkter i et mappetræ at bruge forskellige virtual_envs på forskellige niveauer.
- En tom eller ulæselig .workon fil tolkes som "ingen virtual_env". Dette er nyttigt, hvis du vil deaktivere den automatiske virtual_env i en bestemt undertræ.
- Hvis du aktiverer en virtual_env manuelt, vil autoworkon aldrig tilsidesætte den. . autoworkon vil kun ændre din aktive virtual_env hvis det er frakoblet eller tidligere er fastsat af autoworkon
Krav :
- Python
Kommentarer ikke fundet