Python模块不工作在Linux服务器上,当他们需要连接到互联网?

kaymankayman 成员职位:662独角兽
2018年12月编辑 帮助

在尝试运行一些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行工作良好,因此包被正确安装。在本地机器上也可以正常工作
< /操作符>


< /操作符>






> < /过程
< /操作符>
> < /过程

最佳答案

  • 小礼帽小礼帽 主持人、员工、会员职位:114RM数据科学家
    解决方案接受

    嗯,看起来参考社区帖子中的信息是错误的。请始终使用键值“rapidminer.python_scripting”。Path”——对于所有可能的操作系统都是一样的。

    Thomas_Ott pschlunder

答案

  • pschlunderpschlunder 员工、RapidMiner认证分析师、RapidMiner认证专家、RMResearcher、会员职位:96RM研究

    嗨Kayman,

    以下是一些最初的想法,可能有助于首先识别问题:

    -你是否检查过,在你的ubuntu服务器上运行rapidminer服务器进程的用户是否可以访问与你通过命令行测试python脚本的用户相同的python环境?请运行附在这篇文章上的进程,并提供它的日志输出。它从rapidminer进程中的python操作符中调用python include目录,并将其作为输出提供给日志。打印的目录应该与您输入时得到的目录相同(除了它指向一个include子文件夹)python的在服务器的命令行中。

    你能提供失败进程的服务器日志吗?您可以在/standalone/log/server.log中找到它

    -你是怎么安装的langid软件包在你的ubuntu服务器上?你用过吗?PIP安装PIP install——user langid

    <?xml version="1.0" encoding="UTF-8"?> <过程version = " 7.5.001”>
    > <上下文
    <输入/ >
    <输出/ >
    <宏/ >
    > < /上下文

    <过程扩展= " true " >


    < /操作符>




    > < /过程
    < /操作符>
    > < /过程

    最好的问候,

    菲利普

    MartinLiebig
  • pschlunderpschlunder 员工、RapidMiner认证分析师、RapidMiner认证专家、RMResearcher、会员职位:96RM研究

    如果你需要知道,在哪里设置python路径变量,以便“执行python”使用你想要使用的python版本,看看这个线程:使用python脚本扩展与RM服务器

  • kaymankayman 成员职位:662独角兽

    谢谢各位,

    服务员确实用错了味道。日志显示我正在使用/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

  • pschlunderpschlunder 员工、RapidMiner认证分析师、RapidMiner认证专家、RMResearcher、会员职位:96RM研究

    很高兴听到这个消息,至少我们现在知道问题出在哪里了=)

    好吧,如果您以管理员身份调用它,那么使用不带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"。

    希望这对你有所帮助。

    最好的问候,

    菲利普

  • kaymankayman 成员职位:662独角兽

    由于菲利普,

    我想对于我们使用的一些软件包,它确实可以选择使用2.7版本,但我们内部制作的一些东西是3。x。与此同时,我自己也做了一些调查,改变系统的主python似乎并不是一个好的选择。

    我已经尝试添加调用,查看日志,它是正确加载的,但在调用操作符时,它只是再次使用2.7。因此,RMS似乎无论如何都会丢失,并且在首选项中添加的任何内容都被覆盖,或者只是忽略,因为我也可以将其保留为空。

  • pschlunderpschlunder 员工、RapidMiner认证分析师、RapidMiner认证专家、RMResearcher、会员职位:96RM研究

    更改设置后是否重新启动了RapidMiner服务器?如果没有,请尝试一下。为了考虑更改的设置,需要重新启动。

    最好的问候,

    菲利普

  • kaymankayman 成员职位:662独角兽

    是啊,没什么区别。实际的关键似乎完全被忽略了。我可以添加任何我想要的,甚至删除它,它继续工作,但只使用2.7

    我将尝试安装anaconda,并指向该条目。也许这会有所不同。

    同时,我们仍然欢迎任何好的建议。

  • kaymankayman 成员职位:662独角兽

    是的,这招奏效了。谢谢!

    Thomas_Ott pschlunder
登录注册置评。