Windows Powershell 使用绝对路径运行脚本

Windows Powershell 使用绝对路径运行脚本

我有一个要在 Windows PowerShell 中运行的脚本。使用相对路径时可以正常工作,但使用绝对路径时则不行。如何才能让它在使用绝对路径时也能正常工作?

例子:

从终端运行这个程序有效(从 C: 目录运行)

PS C:\> .\venvs\my_venv\Scripts\activate
(my_venv) PS C:\>

这不起作用

PS C:\> C:\venvs\my_venv\Scripts\activate
PS C:\>

我期待着

PS C:\> C:\venvs\my_venv\Scripts\activate
(my_venv) PS C:\>

答案1

以下是对我有用的方法。执行创建虚拟环境时自动生成的 Activate.ps1 文件,而不是 activate。使用 Python 3.11.0 和 virtualenv 20.20.0 进行测试。

PS C:\> C:\...\pyenv\Scripts\Activate.ps1

以下是完整的评论日志:

PS C:\Users\justinw> python -m venv pyenv

# activates as expected
PS C:\Users\justinw> .\pyenv\Scripts\activate
(pyenv) PS C:\Users\justinw> deactivate

# doesn't activate as expected
PS C:\Users\justinw> C:\Users\justinw\pyenv\Scripts\activate

# activates using absolute path
PS C:\Users\justinw> C:\Users\justinw\pyenv\Scripts\Activate.ps1
(pyenv) PS C:\Users\justinw> deactivate

# FYI on default Scripts created
PS C:\Users\justinw> ls .\pyenv\Scripts\


    Directory: C:\Users\justinw\pyenv\Scripts


Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a----         4/22/2023  11:14 AM           2064 activate
-a----         4/22/2023  11:14 AM            993 activate.bat
-a----         4/22/2023  11:14 AM          24167 Activate.ps1
-a----         4/22/2023  11:14 AM            393 deactivate.bat
-a----         4/22/2023  11:14 AM         108400 pip.exe
-a----         4/22/2023  11:14 AM         108400 pip3.10.exe
-a----         4/22/2023  11:14 AM         108400 pip3.11.exe
-a----         4/22/2023  11:14 AM         108400 pip3.exe
-a----         4/22/2023  11:13 AM         268152 python.exe
-a----         4/22/2023  11:13 AM         256384 pythonw.exe
PS C:\Users\justinw>

答案2

只需在单引号或双引号之前和之内使用一个点来运行(以防路径名中有空格):

.'C:\> C:\...\pyenv\Scripts\Activate.ps1'

相关内容