从 PowerShell 调用虚拟环境中的 Python 脚本而不更改工作目录

问题描述 投票:0回答:1

我正在尝试设置一个

(1)Powershell script
,它将使用
(2)Python .exe
文件激活 Python 虚拟环境,以调用需要
(3)Python script
(4)SQL query
。我希望路径是相对的。

enter image description here

以下脚本应该执行此操作:

$pythonScript   = Join-Path -Path (Join-Path -Path $PSScriptRoot -ChildPath "..\python") -ChildPath "script_python.py"
$pythonVenv     = Join-Path -Path (Join-Path -Path $PSScriptRoot -ChildPath "..\python\venv\Scripts") -ChildPath "python.exe"

$pythonStart    = & $pythonVenv $pythonScript
$pythonStart

在处理我的

(3)Python
脚本时,我可以仅按名称引用 SQL 查询,而不指定路径,因为工作目录隐含为它们的
python
父目录。 但是,当从我的 PowerShell 脚本调用脚本时,工作目录变为
Scripts
目录,虚拟环境
python.exe
文件的父级;因此,当我的Python脚本执行时,找不到
(4)sql_query.sql

如何让工作目录保持

python
,就像我开发Python脚本时一样?

python powershell
1个回答
0
投票

只需在调用脚本之前让 PowerShell 将目录

cd
更改为 python 文件夹,以便同级文件可以使用相对引用:

Push-Location $PSScriptRoot

$pythonScript = "..\python\script_python.py"
$pythonVenv   = "..\python\venv\Scripts\python.exe"

cd "..\python"
$pythonVenv $pythonScript
© www.soinside.com 2019 - 2024. All rights reserved.