从WSL

时间:2018-06-24 05:15:11

标签: python windows bash subsystem

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

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

D:\Program Files\Python36\python.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'标志。我还没有按照我想要的方式来工作,但这可能是什么?

1 个答案:

答案 0 :(得分:0)

您现在已经开始使用它了吗? 从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