从 WSL 中调用 Windows Python 的路径处理错误



我有一个名为"submit.py"的脚本,它以"#!/usr/bin/env python.exe"开头,如果我在包含"submit.py"的目录中,它可以工作。我可以运行"./submit.py"并且脚本运行正常。我决定将包含"submit.py"的目录添加到我的 PATH 环境变量中,以便我可以从任何目录运行"submit.py"。

但是,我无法从任何目录运行"submit.py"。我得到的错误是:

D:Program FilesPython36python.exe: can't open file '/mnt/d/Program Files/kattisTools/submitToKattis': [Errno 2] No such file or directory

我相信这个错误与Windows Python期望路径的方式以及WSL如何处理路径的差异有关。我的意思是python.exe应该寻找"D:\Program Files\kattisTools\submitToKattis",但WSL正在输入"/mnt/d/Program Files/kattisTools/submitToKattis">

我也相信"./submit.py"在包含 submit.py 的目录中工作,因为"."运算符在WSL中的处理方式不同,WSL将真正的Windows路径提供给Windows Python。

我希望有一种补救措施,以便我可以从任何依赖于 Windows Python 的目录运行"submit.py"?

06/26/2018 更新:我已经研究了 WSL 和 Windows 之间的共享环境变量,尤其是"/w"标志。我还没有让它按照我想要的方式工作,但它可能是一些东西?

你现在已经把它弄好了吗? 从 wsl :( 中使用 pipenv 虚拟环境(基于 Windows 的 python.exe(调用 python 脚本时,这里会遇到同样的问题

你是完全正确的。 直接从其文件夹调用脚本,如下所示:C:\scripts\.venv\Scripts\python.exe ./test.py

虽然它看起来像这样(并且不起作用(,但如果从另一个文件夹调用它:C:\scripts\.venv\Scripts\python.exe/mnt/c/scripts/test.py

最新更新