直接调用Python子进程时,GOPATH的解释方式不同

时间:2017-11-22 19:06:15

标签: python bash go gopath

我最近发现Python getpass无法在Windows上运行的修复程序:Python not working in the command line of git bash

或者至少那是我记得改变我的python配置的最后一件事。 (这适用于Windows 10上的Python 3.6.1)

现在我还将Python用于其他任务,这些任务只需要子进程调用就可以在终端上输入几个命令:

go: GOPATH entry is relative; must be absolute: "/c/Users/OP/work"

我收到错误:go build ./src/folder。但是,如果我自己输入C:\work,我就无法得到它。 我在环境变量中将GOPATH设置为;。我尝试了C:/go

有没有办法每次都反转别名python?或者将python的别名设置为winpty时会发生什么?

我在想,当我直接调用go build时,它会被我的用户配置文件或系统调用。当python的子进程调用它时,它会调用相反的方法。因此,我有两个GOPATH变量,即使我在环境变量中只有一组。

附注:GOPATH最近的另一个变化是将其从type python更改,因为它与GOROOT不同。出于某种原因,该错误随机弹出。它使用了一段时间的设置,除了在已经使用的许多其他导入包之外添加另一个导入包之前我不记得更改任何内容。

更新:使用python is aliased to 'winpty python.exe'我得到了结果:unalias python。因此,我尝试使用python is hashed (/c/Users/OP/AppData/Local/Programs/Python/Python36/python)撤消该操作。我得到的新结果是:go build

这修复了Python子进程中的{{1}}命令。但是,该别名是使用getpass包修复另一个Python问题。

2 个答案:

答案 0 :(得分:0)

除了unalias python修复程序之外,我还发现了一些有趣的东西:当我将GOPATH的环境变量从C:\work;更改为C:\go时,所有go命令仍会吐出错误{{ 1}}。我在更新Windows 10 Fall Creators更新时遇到了同样的错误(但路径不同)。也许它是相关的。

只需关闭MINGW并重新打开就可以解决问题。所以也许是说我的环境变量的副本并将其用作参考而不是实际的系统属性。

我知道这不是一个受欢迎的问题,但有人可以从我的调查和调试时间中受益。

答案 1 :(得分:-1)

在Windows下,您必须使用Windows样式的GOPATH,例如d:\code,并且可能您应该使用cmd shell而不是其他内容。不幸的是,cygwin路径(也可能是其他路径)不再有效,特别是为了接触git。

坚持使用Windows路径和Windows shell。