mirror of
https://github.com/RGBCube/nu_scripts
synced 2025-08-03 07:37:47 +00:00
Add Windows support for venv
As with the Conda script, a few differences have to be considered when activating on Windows, namely that the correct env var is Path and the directory containing the executables is "Scripts", not "bin"
This commit is contained in:
parent
9c7822aa18
commit
6def5d5517
2 changed files with 22 additions and 9 deletions
|
@ -1,12 +1,25 @@
|
||||||
def venv [name] {
|
def venv [venv-dir] {
|
||||||
let venv-path = ($name | path expand)
|
let venv-abs-dir = ($venv-dir | path expand)
|
||||||
let venv-bin-path = ([$venv-path "bin"] | path join)
|
let venv-name = ($venv-abs-dir | path basename)
|
||||||
let old-path = ($nu.path | str collect (path-sep))
|
let old-path = ($nu.path | str collect (path-sep))
|
||||||
let new-path = ($nu.path | prepend $venv-bin-path | str collect (path-sep))
|
let new-path = (if (windows?) { (venv-path-windows $venv-abs-dir) } { (venv-path-unix $venv-abs-dir) })
|
||||||
[[name, value];
|
let new-env = [[name, value];
|
||||||
[PATH $new-path]
|
|
||||||
[VENV_OLD_PATH $old-path]
|
[VENV_OLD_PATH $old-path]
|
||||||
[VIRTUAL_ENV $venv-path]]
|
[VIRTUAL_ENV $venv-name]]
|
||||||
|
|
||||||
|
$new-env | append $new-path
|
||||||
|
}
|
||||||
|
|
||||||
|
def venv-path-unix [venv-dir] {
|
||||||
|
let venv-path = ([$venv-dir "bin"] | path join)
|
||||||
|
let new-path = ($nu.path | prepend $venv-path | str collect (path-sep))
|
||||||
|
[[name, value]; [PATH $new-path]]
|
||||||
|
}
|
||||||
|
|
||||||
|
def venv-path-windows [venv-dir] {
|
||||||
|
let venv-path = ([$venv-dir "Scripts"] | path join)
|
||||||
|
let new-path = ($nu.path | prepend $venv-path | str collect (path-sep))
|
||||||
|
[[name, value]; [Path $new-path]]
|
||||||
}
|
}
|
||||||
|
|
||||||
def windows? [] {
|
def windows? [] {
|
||||||
|
@ -16,4 +29,3 @@ def windows? [] {
|
||||||
def path-sep [] {
|
def path-sep [] {
|
||||||
if (windows?) { ";" } { ":" }
|
if (windows?) { ";" } { ":" }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
let-env PATH = $nu.env.VENV_OLD_PATH
|
let path-name = (if ((sys).host.name == "Windows") { "Path" } { "PATH" })
|
||||||
|
let-env $path-name = $nu.env.VENV_OLD_PATH
|
||||||
unlet-env VIRTUAL_ENV
|
unlet-env VIRTUAL_ENV
|
||||||
unlet-env VENV_OLD_PATH
|
unlet-env VENV_OLD_PATH
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue