【问题标题】:virtualenv in PowerShell?PowerShell中的virtualenv?
【发布时间】:2010-11-24 19:18:41
【问题描述】:

在PowerShell中使用virtualenv时似乎有问题。

当我尝试在 PowerShell 中激活我的环境时...

env/scripts/activate

.. 没有任何反应。 (shell 提示符以及 PATH 环境变量应该已经改变。)

我猜问题是 PowerShell 产生了一个新的 cmd。仅用于运行 activate.bat 的进程,从而在完成后将 activate.bat 对 shell 所做的更改呈现为死。

您有解决此问题的方法吗? (我现在坚持使用cmd.exe

【问题讨论】:

    标签: python powershell virtualenv


    【解决方案1】:

    没有 Windows 10。 命令 virtualenv venv/Script/activate.bat

    【讨论】:

    • 你的意思是这在 Windows 10 上工作,还是你没有在 Windows 10 上测试过?有点不清楚。
    【解决方案2】:

    运行以下命令:

    Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope Process -Force
    

    接着是:

    ./env/Scripts/activate.ps1
    

    就是这样

    【讨论】:

      【解决方案3】:
      1. 搜索 Windows Powershell
      2. 右键,选择以管理员身份运行;如果需要,确认安全弹出窗口
      3. 输入:Set-ExecutionPolicy Unrestricted 输入:A
      4. cd.\env\Scripts\activate

      【讨论】:

        【解决方案4】:

        我原来的答案现在已经过时了。现在,只需使用 activate.ps1(而不是 activate.bat)从 Powershell 环境中激活。


        原答案:

        Here 的帖子包含一个 Powershell 脚本,该脚本允许您运行持久修改其环境变量的批处理文件。该脚本会将任何环境变量更改传播回调用 PowerShell 环境。

        【讨论】:

        • 这可行,但不能添加提示参数。必须有一个 activate.ps1 可以在设置提示之前调用 Write-Host。
        • 这个答案不再有效,因为 virtualenv 支持开箱即用的 powershell,正如stackoverflow.com/questions/1365081/virtualenv-in-powershell/…中所指出的那样
        • 链接转到404页面
        • 链接丢失
        • 试试:./Activate.ps1
        【解决方案5】:

        首先,确保您被允许运行脚本。如果不激活它。 现在打开powershell pip install virtualenv (如果您的系统中没有安装 virtualenv) python -m virtualenv myenv(这里的“myenv”是你的环境名称)

        #activating 你创建的虚拟环境: myenv/Scripts/Activate.ps1

        #停用虚拟环境: 停用

        【讨论】:

          【解决方案6】:

          对于仍在努力完成工作的任何人,默认情况下,Windows PowerShell 不会从当前位置加载命令。如果您 cd 进入 activate.ps1 的位置,运行 activate.ps1 可能会返回“术语 'activate' 未被识别为 cmdlet 的名称”。

          为了从当前位置运行activate.ps1,尝试:

          .\activate.ps1
          

          【讨论】:

            【解决方案7】:

            Windows Power shell 被认为比普通的命令提示 shell 更强大且“加速”。 在您使用 Visual Studio 代码 (VScode) 的实例中,运行 power shell 来启动 Python 虚拟环境可能会引发错误,尤其是在 Windows 10 上,如下所示。

            \Activate :文件 C:\users\titus\django1\Scripts\Activate.ps1 无法加载,因为在此系统上禁用了运行脚本。 有关详细信息,请参阅 https://go.microsoft.com/fwlink/?LinkID=135170 上的 about_Execution_Policies。 在 line:1 char:1

            要解决此问题,您可以执行以下操作:

            1. 进入windows设置
            2. 打开更新和安全
            3. 选择“开发者”
            4. 启用开发者模式
            5. 接受所有条款

            谢谢 万事如意

            【讨论】:

              【解决方案8】:

              还有 2 条建议:

              因为削弱安全策略总是有问题的,所以我建议以 Powershell 的最小方式来做到这一点: 不是以管理员身份调用 Powershell,而是以想要使用 virtualenv 功能的用户身份调用。类型 “set-executionpolicy -executionpolicy unrestricted -scope currentuser”。 这样,政策只会针对一个用户而不是整台机器更改。

              其次,我建议从 github 下载源代码 “regisf/virtualenvwrapper-powershell”。下载后将 zip 文件解压到本地目录并在其中运行文件“Install.ps1”。这将在您的计算机上永久扩展 Powershell 配置文件,从而启用所有“virtalenvwrapper-win”命令,包括“workon”。之后,您将不会注意到 Powershell 和 Commandshell 关于 virtualenv 的行为有任何差异。

              【讨论】:

                【解决方案9】:

                我写了一个小脚本来激活它。

                # Don't forget to change execution policies
                # Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope CurrentUser
                # More info https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_execution_policies?view=powershell-7
                
                if (Test-Path env:VIRTUAL_ENV) {
                    deactivate  
                }
                
                $env = .\venv\Scripts\activate.ps1
                
                # use $env to set variables, for instance $env:FLASK_APP = "main.py"
                

                记得使用 PowerShell 扩展名.ps1 保存文件。

                【讨论】:

                  【解决方案10】:

                  我也有这个问题!终于找到了我们应该在windows中做什么...

                  好的,请按以下步骤操作:

                  1)在windows的搜索栏中输入powershell然后右键选择以管理员身份运行

                  (如果您对该检查有问题this

                  2) 在powershell中运行以下命令:Set-ExecutionPolicy Unrestricted

                  3) 重新运行激活命令:.\\env\Scripts\activate.ps1

                  (只需运行确切的命令!注意环境名称。)

                  就是这样!:)

                  【讨论】:

                    【解决方案11】:

                    在 Windows PowerShell 上,我必须从 venv/Scripts 文件夹中输入:

                    . ./activate
                    

                    【讨论】:

                      【解决方案12】:

                      Windows 用户

                      在 Powershell 中:

                      1. 以管理员身份运行 Powershell
                      2. 复制并粘贴此命令:set-executionpolicy remotesigned
                      3. 同意消息。

                      最后,运行

                      your_virtualenv_name\Scripts\activate.ps1
                      

                      代替

                      your_virtualenv_name\Scripts\activate.bat
                      

                      在 CMD 中 运行:

                      your_virtualenv_name\Scripts\activate.bat
                      

                      【讨论】:

                        【解决方案13】:

                        在您的虚拟环境文件夹的 Scripts 目录中,有几个激活脚本可以使用,具体取决于您执行命令的位置。如果您尝试从 Windows PowerShell 激活虚拟环境,请尝试使用以下命令:

                        . .\env\Scripts\activate.ps1

                        如果您收到有关系统上禁用激活脚本的错误消息,您首先需要在系统上调用执行策略更改。这需要以管理员身份完成。

                        要做到这一点:

                        1) 右键单击​​ PowerShell 应用程序并选择以管理员身份运行

                        2) 运行以下命令:Set-ExecutionPolicy Unrestricted

                        3) 重新运行激活命令:. .\env\Scripts\activate.ps1

                        【讨论】:

                          【解决方案14】:

                          我编写了这个快速的小脚本来处理我的开发服务器的激活和启动。

                          $ep = Get-ExecutionPolicy
                          
                          if ($ep -eq 'RemoteSigned') {
                          
                              $root = "C:\Users\ALeven\OneDrive\!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_venv\Scripts\Activate.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"
                          
                          }
                          

                          享受吧。

                          【讨论】:

                            【解决方案15】:

                            此错误的发生是由于一项安全措施,未经您的批准不允许在您的系统上执行脚本。您可以通过打开具有管理权限的 powershell(在主菜单中搜索 powershell 并从上下文菜单中选择以管理员身份运行)并输入:

                            set-executionpolicy remotesigned

                            更多: http://www.faqforge.com/windows/windows-powershell-running-scripts-is-disabled-on-this-system/

                            【讨论】:

                              【解决方案16】:

                              试试这个: . .\env\Scripts\activate.ps1 注意点和空格

                              【讨论】:

                                【解决方案17】:

                                The latest version of virtualenv 支持开箱即用的 PowerShell

                                只要确保你运行:

                                Scripts\activate.ps1
                                

                                而不是

                                Scripts\activate
                                

                                后者将执行activate.bat,这在 PowerShell 上不起作用。

                                【讨论】:

                                • 您可能需要运行set-executionpolicy RemoteSigned 以允许脚本运行(我之前设置为Restricteddocs
                                • 只需输入 deactivate 即可撤消
                                • 请注意,该脚本会创建一个用于停用的内存函数。它被命名为deactivate
                                • 我不得不写:./Activate.ps1 否则对我不起作用。
                                • 如果你没有管理员权限,你可能需要运行set-executionpolicy RemoteSigned -Scope CurrentUser而不是Alex L提供的命令
                                【解决方案18】:

                                一种快速的解决方法是调用 cmd,然后从 cmd 会话中运行您的 activate.bat。例如:

                                PS C:\my_cool_env\Scripts> cmd
                                Microsoft Windows [Version 6.1.7600]
                                Copyright (c) 2009 Microsoft Corporation.  All rights reserved.
                                
                                C:\my_cool_env\Scripts>activate.bat
                                (my_cool_env) C:\my_cool_env\Scripts>
                                

                                【讨论】:

                                  猜你喜欢
                                  • 2019-01-13
                                  • 1970-01-01
                                  • 2021-12-07
                                  • 2019-09-08
                                  • 1970-01-01
                                  • 1970-01-01
                                  • 2016-12-21
                                  • 1970-01-01
                                  • 1970-01-01
                                  相关资源
                                  最近更新 更多