我正在尝试设置一个
(1)Powershell script
,它将使用 (2)Python .exe
文件激活 Python 虚拟环境,以调用需要 (3)Python script
的 (4)SQL query
。我希望路径是相对的。
以下脚本应该执行此操作:
$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脚本时一样?
只需在调用脚本之前让 PowerShell 将目录
cd
更改为 python 文件夹,以便同级文件可以使用相对引用:
Push-Location $PSScriptRoot
$pythonScript = "..\python\script_python.py"
$pythonVenv = "..\python\venv\Scripts\python.exe"
cd "..\python"
$pythonVenv $pythonScript