Python模块不工作在Linux服务器上,当他们需要连接到互联网?
在尝试运行一些python包时,我遇到了一个非常奇怪和非常恼人的问题。它们都可以在本地桌面上工作,或者在本地模式下运行服务器进程。但是每当我想在服务器(Ubuntu 16.04)上完全运行相同的进程时,它就会失败,并给我“脚本无法解析”。
在windows服务器设置上,它们工作得很好,所以我的第一个猜测是安全设置,但是在另一个ubuntu测试服务器上运行同样的进程,我真的给了所有选项,它仍然会出现问题,所以我可能会把它算在内。
有些包在服务器上工作得很好,基本上任何标准的python命令都工作得很好,但似乎只要需要一些互联网连接,脚本就会失败。我有两个完全不同的给出同样的问题,一个我用来调用微软翻译API,另一个我用来验证一种语言。如前所述,它们在桌面框架和windows服务器下工作得很好,在Rapidminer以外的linux服务器上使用它们时也是如此。所以我真的被困住了,这是我们成功过程的一个关键方面。
如果添加了一个简化的工作流程,用一句话。第一部分,它使用了一个漂亮的soup pythin脚本,运行良好。第二部分使用lang .py获取语言。只有在服务器(ubuntu)上执行时才会失败。
如果有人能看一下这个,我会非常感激,因为这对我们来说非常重要。我们将在RM和翻译方面进行大量投资,以使文本挖掘成为流程流的重要组成部分。它在一个较小的windows测试服务器上运行良好,但最终的生产服务器将是Linux。
<?xml version="1.0" encoding="UTF-8"?> <过程version = " 7.5.001”>
> <上下文
<输入/ >
<输出/ >
<宏/ >
> < /上下文
<过程扩展= " true " >
<列出关键= " attribute_value " >
< / >列表
<列出关键= " set_additional_roles " / >
< /操作符>这样可以使python正确安装在服务器上
< /操作符>这个不行。在其他程序中使用相同的脚本,或者从cmd行工作良好,因此包被正确安装。在本地机器上也可以正常工作
< /操作符>
< /操作符>
> < /过程
< /操作符>
> < /过程
0
最佳答案
-
小礼帽 主持人、员工、会员职位:114RM数据科学家
答案
嗨Kayman,
以下是一些最初的想法,可能有助于首先识别问题:
-你是否检查过,在你的ubuntu服务器上运行rapidminer服务器进程的用户是否可以访问与你通过命令行测试python脚本的用户相同的python环境?请运行附在这篇文章上的进程,并提供它的日志输出。它从rapidminer进程中的python操作符中调用python include目录,并将其作为输出提供给日志。打印的目录应该与您输入时得到的目录相同(除了它指向一个include子文件夹)python的在服务器的命令行中。
你能提供失败进程的服务器日志吗?您可以在/standalone/log/server.log中找到它
-你是怎么安装的langid软件包在你的ubuntu服务器上?你用过吗?PIP安装或PIP install——user langid?
最好的问候,
菲利普
如果你需要知道,在哪里设置python路径变量,以便“执行python”使用你想要使用的python版本,看看这个线程:使用python脚本扩展与RM服务器
谢谢各位,
服务员确实用错了味道。日志显示我正在使用/usr/include/python2.7,即使我的设置指向3.5
我尝试过/usr/include/python3.5和/usr/bin/python3.5,但服务器一直指向2.7。
我确实每次都重新启动服务器,所以它应该已经升级了。我可以完全删除属性,它仍然可以工作(指向2.7)
我在系统设置下输入了如下内容:
Rapidminer.python.path - /usr/include/python3.5
有线索吗?我用了一个无头装置,如果这可能会有一些影响。
(PS:我用过Sudo pip3安装langid
很高兴听到这个消息,至少我们现在知道问题出在哪里了
好吧,如果您以管理员身份调用它,那么使用不带user选项的pip install至少会为每个用户安装插件。但这里是不可用的,因为我猜你安装了python 3(你需要它吗?),但正如你指出的,你的服务器只访问python 2。因此,包是不可用的。一个选项可以是为给定的python 2.7安装包系统范围。
一种极端的方法是改变系统的主python。为此,您可以将python 3.5 bin文件夹添加到系统PATH变量中,例如您的.profile设置。但请记住,特别是在ubuntu上,这可能会导致更新东西时出现问题,因为一些应用程序不会正确地要求系统python,而只是使用python命令而不在乎它链接到哪里。
对于临时更改,您可以创建一个启动例程/脚本,它首先更改“PATH”变量中的python,仅用于执行服务器所在的会话。例如,在声明RapidMiner服务器之前调用"export PATH = /usr/include/python3.5/:$PATH"。
希望这对你有所帮助。
最好的问候,
菲利普
由于菲利普,
我想对于我们使用的一些软件包,它确实可以选择使用2.7版本,但我们内部制作的一些东西是3。x。与此同时,我自己也做了一些调查,改变系统的主python似乎并不是一个好的选择。
我已经尝试添加调用,查看日志,它是正确加载的,但在调用操作符时,它只是再次使用2.7。因此,RMS似乎无论如何都会丢失,并且在首选项中添加的任何内容都被覆盖,或者只是忽略,因为我也可以将其保留为空。
更改设置后是否重新启动了RapidMiner服务器?如果没有,请尝试一下。为了考虑更改的设置,需要重新启动。
最好的问候,
菲利普
是啊,没什么区别。实际的关键似乎完全被忽略了。我可以添加任何我想要的,甚至删除它,它继续工作,但只使用2.7
我将尝试安装anaconda,并指向该条目。也许这会有所不同。
同时,我们仍然欢迎任何好的建议。
是的,这招奏效了。谢谢!