首页 > 解决方案 > 使用 PowerShell 或 CMD 在 python 中自动化第三方库

问题描述

如果我想在 Windows 10 中运行我的 Python 3.8 程序,我必须首先在 PowerShell 中加载以下命令:

PS> cmd
CMD> call [somePath]/environmentSettingScript.bat
CMD> set Path=%Path%;D:[someOtherPath]\win64

之后,我可以在同一个窗口中运行 Python(仍然在 PS 中运行 CMD)并加载我的第三方库。

CMD> python
>>> from thirdPartyLibrary import something

或者

CMD> python programThatUseThirdPartyLibrary.py

当然,如果我直接在 CMD 中从第一个片段制作call和处理,它也可以工作。set不过,我不喜欢这种解决方案。我想在 programThatUseThirdPartyLibrary.py 代码中直接使用 Spyder IDE 使这个过程自动化。为此,我尝试编写类似的内容:

import subprocess

pipe = subprocess.Popen(r"cmd \c call [somePath]/environmentSettingScript.bat \c set Path=%Path%;D:[someOtherPath]\win64", 
                        stdin = subprocess.PIPE, 
                        stdout = subprocess.PIPE, 
                        stderr = subprocess.PIPE, 
                        encoding='utf8',
                        shell=True)
stdout, stderr = pipe.communicate()
print("No stderr" if pipe.returncode == 0 else "Some stderr")

from thirdPartyLibrary import something

不幸的是,stdout仅显示有关加载第一行cmd命令的信息:

Microsoft Windows [Version 10.0.17763.1697]
(c) 2018 Microsoft Corporation. All rights reserved.

D:\[workDir]>

看起来,其余的命令都卡在了管道中。我很困惑,因为print()stderr表明,一切正常 - 但import在脚本结束时出现错误

ModuleNotFoundError: No module named thirdPartyLibrary 

标签: pythonpowershellcmdsubprocess

解决方案


推荐阅读