我一直在尝试在本地IIS上部署使用Theano的Conv网络的Python Flask App。当我尝试加载酸洗神经网络时,我得到以下错误
无法创建编译。
我通过更改configdefaults.py中的compiledir路径并在该目录上为IIS提供读/写权限来解决这个问题。现在,compileir被创建了。
现在我收到MissingGXX错误" g ++不可用!我们无法编译 c代码。"。 G ++存在于我的PythonFolder \ Scripts中,我已经添加了这个 我的环境变量路径的路径。
我只是想知道导致此错误的原因是什么?是因为Theano无法找到g ++并且它完全是关于路径问题的,或者它与compileir lock有关
PS:我可以从我的Winpython控制台运行代码,一切正常。我从Win python控制台上看到%PATH%和%PYTHONPATH%的内容,并在我部署的IIS Web App上复制了相同的内容。
这里是堆栈跟踪的标题:
(MissingGXX('编译节点时出现以下错误', Shape_i {0}(input.input),' \ n'," g ++不可用!我们无法编译c 代码。",' [Shape_i {0}(input.input)]'),,(
答案 0 :(得分:1)
我已经解决了这个问题,我的WinPython环境中有两个g ++可执行文件,位于以下路径
Spyder使用了正确的(2),IIS似乎使用了1中提到的那个。我明确地在IIS上的PATH env变量中添加了2的路径。 Spyder在PATH中没有2个(这很奇怪)但是它使用了2中提到的那个(我确认在登录Theano文件后)。
在此之后我的MissingGxx错误消失但是现在Theano无法创建编译目录,因为IIS使用系统配置文件而Theano使用该配置文件生成compile_dir的路径,它位于C中的某个位置; | Windows | System32 \ config \ SystemsProfile | Theano \ compile_dir和IIS没有权限(Spyder使用我的本地USERPROFILE)。我更改了Theano的configdefaults.py中的default_base_compiledir路径,并授予IIS访问和修改它的权限。我无法为SystemsProfile中的先前编译者分配权限,因为该位置非常敏感,操作系统限制我这样做。
PS:我通过
复制了PATHecho%PATH%
从我的WinPython控制台和2中提到的串联g ++路径并添加到IIS上的PATH变量,因为WinPython PATH变量没有2。