powershell下 workon命令不生效-解决

当我们在windows下安装了python的虚拟环境管理包 virtualenvwrapper-win 后,使用 workon 命令的时候,只能在 cmd 命令窗口下使用,但是 powershell 下是不管用的,因为 workon的脚本只有bat,没有ps1的

经过查询解决方案,现将我目前收集到的方案做一个分享,希望能帮到有需要的小伙伴。

方案

首先要找到你的python包的 Scripts 路径,通过 ls 你可以看到
powershell下 workon命令不生效-解决_第1张图片

在同级目录下创建 workon.ps1 文件,并写入以下内容

if (-not (Test-Path env:WORKON_HOME))
{
    $WORKON_HOME = '~\Envs'
} else {
    $WORKON_HOME = ($env:WORKON_HOME).Replace('"','')
}

if (-not (Test-Path env:VIRTUALENVWRAPPER_PROJECT_FILENAME)) {
    $VIRTUALENVWRAPPER_PROJECT_FILENAME = '.project'
} else {
    $VIRTUALENVWRAPPER_PROJECT_FILENAME = ($env:VIRTUALENVWRAPPER_PROJECT_FILENAME).Replace('"','')
}

if ($args.length -eq 0) {
    echo "Pass a name to activate one of the following virtualenvs:"
    echo ==============================================================================
    (Get-ChildItem -Path $WORKON_HOME).Name
    return
}

$VENV = $args[0]

if (!(Test-Path -Path ("$($WORKON_HOME)\$($VENV)"))) {
    echo ("virtualenv $($VENV) does not exist")
    echo "Create it with 'mkvirtualenv $($VENV)'"
    return
}

if (!(Test-Path -Path ("$($WORKON_HOME)\$($VENV)\Scripts\activate.ps1") ))  {
    echo "$($WORKON_HOME)$($VENV)"
    echo "doesn't contain a virtualenv (yet)."
    echo "Create it with 'mkvirtualenv $($VENV)'"
    return
}

iex ("$($WORKON_HOME)\$($VENV)\Scripts\activate.ps1")

if (Test-Path -Path ("$($WORKON_HOME)\$($VENV)\$($VIRTUALENVWRAPPER_PROJECT_FILENAME)")) {
    iex "cdproject"
}

现在目录结构如下:
powershell下 workon命令不生效-解决_第2张图片
然后我们就可以直接在powershell下使用了。

PS C:\personal_folder\software\Python\Python310> workon.ps1
Pass a name to activate one of the following virtualenvs:
==============================================================================
dev
torch
PS C:\personal_folder\software\Python\Python310> workon.ps1 dev
(dev) PS C:\personal_folder\software\Python\Python310>

可以发现已经ok了。

可能遇到的问题

可能当你创建完 workon.ps1 脚本后,出现 无法加载文件xxx.ps1,因为在此系统上禁止运行脚本...

你需要在 powershell的管理员模式下 执行 set-ExecutionPolicy RemoteSigned ,然后重新启动powershell就可以全局使用了。

参考资料

1. workon.ps1 脚本创建
2. xxx.ps1 系统禁止运行脚本

你可能感兴趣的:(python,powershell,python,windows)