python - 使用 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
解决方案
推荐阅读
- ios - NEPacketTunnelProvider 为什么我从这个 IP 17.130.21.5:443 获取数据包
- mysql - Flutter - 将列表转换为 json 并存储在 MYSQL 数据库中
- javascript - 如何使用js更改html中的控制列表?
- excel - 运行时错误 404 范围类的粘贴特殊方法失败
- android - 我的 apk 如何与我的本地服务器通信?
- linux - Ubuntu新用户登录但username@不存在
- tomcat - 在 grails 2.2 中没有任何插件生成的战争文件是 20mb?
- java - 两个原始类型流到一个对流
- amazon-web-services - 导出到浏览器后从 aws acm 下载私有证书显示无效证书
- javascript - 如何让这个alexa技能识别两个意图