问题一:
1. 按照官方文档安装配置Windows subsystem for linux后用cmd或powershell 执行wsl 相关命令均正常,通过python 自带的os.system执行wsl 相关命令提示:'wsl' 不是内部或外部命令,也不是可运行的程序\n或批处理文件。\n"
2. 在pycharm的调试工具下查看windows/system32文件夹下的列表,wsl相关的文件均不在,但是实际该文件夹是存在的
3.在别人的电脑上是正常的
临时解决方案:
1.原理上从ubunut端启动命令运行,即通过os.system执行windows上的ubuntu1804.exe
2.根据帮助在后后面带上run + 执行的命令:路径\ubuntu1804.exe run pwd
3. 如cmd1 = "{0} pwd".format(wsl_path) wsl_path: exe所在的路径\ubuntu1804.exe run
注意事项:
1. 要运行ubuntu上的二进制文件是要在ubuntu 上安装对应的依赖
2. 如果执行的文件是在windwos上要注意路径
3.举例:
3.1: 文件就在ubuntu 那侧test.py运行,从打开的应用上如图所示:
此时os.sytem("{0} python3 /home/sunada/test.py".format(wsl_path))
3.2: 如果文件在windows桌面或其他盘,又要让ubuntu上执行,此时先确定pwd
如图测试得:
此时os.system("{0} python3 /mnt/c/Users/Admin/Desktop/tmp.py".format(wsl_path))即可:
如下图所示:
需注意:该命令敲出去就已经在执行。 像本人图片做的是单例测试并没有做成异步的,所以需要等待tmp.py文件执行完成的时间实在subprocess的设置的超时范围内才不会报超时,否则会爆超时的。