PowerShell 中的虚拟环境?
- 2025-04-16 08:57:00
- admin 原创
- 14
问题描述:
在 PowerShell 中使用virtualenv时似乎存在问题。
当我尝试在 PowerShell 中激活我的环境时...
env/scripts/activate
..什么也没有发生。(shell提示符和PATH环境变量都应该改变。)
我猜问题在于 PowerShell 生成了一个新的 cmd。进程只是为了运行 activate.bat,因此activate.bat
在完成后对 shell 所做的更改就失效了。
您对这个问题有什么解决方法吗?(我cmd.exe
目前坚持使用这个方法)
解决方案 1:
最新版本的 virtualenv支持开箱即用的 PowerShell。
只要确保你运行:
Scriptsactivate.ps1
而不是
Scriptsactivate
后者将执行activate.bat
,但这在 PowerShell 上不起作用。
解决方案 2:
我原来的答案现在已经过时了。现在,只需使用activate.ps1
(而不是activate.bat
) 从 Powershell 环境激活即可。
原始答案:
这篇文章包含一个 Powershell 脚本,该脚本允许您运行批处理文件并持久修改其环境变量。该脚本会将任何环境变量的更改传播回调用 PowerShell 的环境。
解决方案 3:
运行此命令:
Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope Process -Force
其次是:
./env/Scripts/activate.ps1
就这样
解决方案 4:
一个快速的解决方法是调用 cmd,然后在 cmd 会话中运行 activate.bat。例如:
PS C:my_cool_envScripts> cmd
Microsoft Windows [Version 6.1.7600]
Copyright (c) 2009 Microsoft Corporation. All rights reserved.
C:my_cool_envScripts>activate.bat
(my_cool_env) C:my_cool_envScripts>
解决方案 5:
在虚拟环境文件夹的 Scripts 目录中,有多个激活脚本可供使用,具体取决于执行命令的位置。如果您尝试从 Windows PowerShell 激活虚拟环境,请尝试使用以下命令:
. .envScriptsactivate.ps1
如果您收到有关系统上激活脚本被禁用的错误,您首先需要在系统上调用执行策略更改。此操作需要以管理员身份执行。
要做到这一点:
1)右键单击 PowerShell 应用程序并选择以管理员身份运行
2)运行以下命令:Set-ExecutionPolicy Unrestricted
3)重新运行激活命令:. .envScriptsactivate.ps1
解决方案 6:
无法加载 env\Scripts\Activate.ps1,因为此系统上已禁用脚本执行。
Set-Execution Policy 可用于允许当前用户运行脚本,如下所示。
Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Scope CurrentUser
跑步之后...
env/Scripts/Activate.ps1
解决方案 7:
试试这个:. .envScriptsactivate.ps1
观察点和空格
解决方案 8:
此错误是由于一项安全措施导致的,该措施不允许未经您批准的脚本在您的系统上执行。您可以打开具有管理员权限的 Powershell(在主菜单中搜索 Powershell,然后从上下文菜单中选择“以管理员身份运行”)并输入以下内容来执行此操作:
设置远程签名执行策略
更多信息请访问:
http://www.faqforge.com/windows/windows-powershell-running-scripts-is-disabled-on-this-system/
解决方案 9:
Windows 用户
在 Powershell 中:
以管理员身份运行 Powershell
复制并粘贴此命令:
set-executionpolicy remotesigned
同意该消息。
最后,运行
your_virtualenv_nameScriptsactivate.ps1
而不是
your_virtualenv_nameScriptsactivate.bat
在 CMD 中运行:
your_virtualenv_nameScriptsactivate.bat
解决方案 10:
在 Windows PowerShell 上,我必须从 venv/Scripts 文件夹中输入:
. ./activate
解决方案 11:
首先,请确保您有权运行脚本。如果没有,请激活它。现在打开 powershell pip install virtualenv(如果您的系统中未安装 virtualenv)python -m virtualenv myenv(此处“myenv”是您的环境名称)
激活您创建的虚拟环境:myenv/Scripts/Activate.ps1
停用虚拟环境:停用
解决方案 12:
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
当您尝试在 PowerShell 中激活虚拟环境(例如envScriptsActivate
)时,PowerShell 会根据 来检查是否允许脚本执行set-ExecutionPolicy
。如果此策略限制过多(例如Restricted
),则会阻止激活脚本运行。通过设置RemoteSigned
范围CurrentUser
,您可以允许activate.ps1
虚拟环境的脚本在 PowerShell 会话中正常运行,而无需提升权限。
解决方案 13:
我也遇到过这个问题!最后发现我们应该在 Windows 中做什么……
好的,请按照以下步骤操作:
1)在 Windows 的搜索栏中输入 powershell,然后右键单击它并选择以管理员身份运行
(如果您有问题请检查此处)
2)在 powershell 中运行以下命令:Set-ExecutionPolicy Unrestricted
3)重新运行激活命令:.\envScriptsactivate.ps1
(只需运行确切的命令!请注意环境的名称。)
就是这样!:)
解决方案 14:
还有 2 个建议:
因为削弱安全策略总是有问题的,所以我建议使用 Powershell 的最小化方法:不要以管理员身份,而是以想要使用虚拟环境功能的用户身份调用 Powershell。输入“set-executionpolicy -executionpolicy unrestricted -scope currentuser”。这样,策略只会针对单个用户进行更改,而不会影响整台机器。
其次,我建议从 GitHub 下载“regisf/virtualenvwrapper-powershell”源码。下载后,将 zip 文件解压到本地目录,并运行其中的“Install.ps1”文件。这将永久扩展 Powershell 配置文件,从而启用所有“virtalenvwrapper-win”命令,包括“workon”。之后,您将不会注意到 Powershell 和 Commandshell 在虚拟环境中的行为有任何差异。
解决方案 15:
Windows Power Shell 被认为比普通的命令提示符 Shell 功能强大且“涡轮增压”。例如,如果您正在使用 Visual Studio Code (VScode),运行 Power Shell 启动 Python 虚拟环境可能会抛出错误,尤其是在 Windows 10 上,如下所示。
\Activate:无法加载文件 C:/users\titus\django1\Scripts\Activate.ps1,因为此系统已禁用运行脚本。有关更多信息,请参阅 about_Execution_Policies,网址为 https:/go.microsoft.com/fwlink/?LinkID=135170。位于第 1 行,字符数为 1
要解决此问题,您可以执行以下操作:
进入 Windows 设置
打开更新和安全
选择“面向开发人员”
启用开发者模式
接受所有条款
谢谢大家
解决方案 16:
我编写了这个简短的小脚本来处理开发服务器的激活和启动。
$ep = Get-ExecutionPolicy
if ($ep -eq 'RemoteSigned') {
$root = "C:UsersALevenOneDrive!code_projects!django_projects\"
$test = Read-Host -Prompt 'Would you like to activate the python environment? y/n'
if ($test -eq 'y') {
$activatestr = ($root + "work_venvScriptsActivate.ps1")
& $activatestr
}
$test = Read-Host -Prompt 'Would you like to run the python server? y/n'
if ($test -eq 'y') {
$whichserver = Read-Host -Prompt 'Enter the name of the project.'
$path = ($root + $whichserver)
$runserverstr = ($path + "manage.py")
python.exe $runserverstr runserver
}
} else {
Write-host "Execution Policy does not allow this script to run properly"
Write-host "If you have the proper permissions,"
Write-Host "Please close powershell,"
Write-host "then right click the powershell icon and run as administrator"
Write-host "Once in the powershell environment, execute the following:"
Write-host "Set-ExecutionPolicy RemoteSigned -Force"
}
享受。
解决方案 17:
我写了一个小脚本来激活它。
# Don't forget to change execution policies
# Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope CurrentUser
# More info https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_execution_policies?view=powershell-7
if (Test-Path env:VIRTUAL_ENV) {
deactivate
}
$env = .envScriptsactivate.ps1
# use $env to set variables, for instance $env:FLASK_APP = "main.py"
记得使用 PowerShell 扩展保存文件.ps1
。
解决方案 18:
对于仍在努力尝试的人,Windows PowerShell 默认不会从当前位置加载命令。如果您使用 cd 命令进入 activate.ps1 的位置,运行activate.ps1
可能会返回“术语‘activate’未被识别为 cmdlet 的名称”。
为了从当前位置运行 activate.ps1,请尝试:
.activate.ps1
解决方案 19:
我在任何 PowerShell 中都遇到了这个问题,最后我只是输入了带有 . 前缀的激活命令。
扫码咨询,免费领取项目管理大礼包!