Articles of python

如何使用Cython将Python 3编译为C

我试图将Python 3脚本转换为C,然后将该C文件编译为可执行文件。 我有这个简单的Python脚本: def greet(name = ""): print("Hello {0}".format(name if len(name) > 0 else "World")) greet("Mango") 我已经将此脚本转换为C使用: cython greet.py -o greet.c 然后我编译的C文件使用: cc greet.c -o greet 我进入最后一个命令后,我得到了错误: 致命错误:Python.h:没有这样的文件或目录编译终止。 在得到错误之后,我回头意识到我正在使用Python3,并且在“cython”之后忘记了“3”。 所以重新编译python脚本使用: cython3 greet.py -o greet.c 然后尝试使用以下命令重新编译C文件: cc greet.c -o greet 再次失败,并抛出同样的错误,所以我去SO和谷歌search,发现这些问题: 致命错误:Python.h:没有这样的文件或目录 我在我的Ubuntu系统上有Python,但gcc找不到Python.h https://askubuntu.com/questions/526708/fatal-error-python-h-no-file-or-directory 这些问题的答案都不起作用。 我确定我已经使用apt-get install和pip install安装了cython所有正确的依赖关系,可悲的是我认为它仍然不起作用。

如何在单独的进程中运行一个shell并获得自动完成? (python)

我有一个Linux应用程序,从一些设备获取inputstream。 这个input应该被引导到一个shell进程,以便它模拟给用户一个标准的shell。 到目前为止,我已经通过创build运行'/ bin / sh'的进程来完成它,并且我redirect了其input,输出和stderr,如下所示: import subprocess p = subprocess.Popen(shell=False, args=['/bin/sh'], stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE) _make_nonblocking(p.stdout) # sets O_NONBLOCK _make_nonblocking(p.stderr) 当我只是一个通行命令,一切正常。 p.stdin.write('pwd\n') p.stdout.read() '/home/dave\n' 对于自动完成,我试图写: p.stdin.write('ls s\t') p.stdout.read() IOError: [Errno 11] Resource temporarily unavailable 我希望得到一个可能的完成列表,但没有任何反应,直到我把“\ N”在标准input。 (另外,stderr没有什么等待)。 我已经查看了telnetd代码,并看到使用pty。 我尝试使用pty.openpty()并将slave设置为stdin,但是这也不起作用。 应该怎么办? 更新:我用build议的-i参数。 现在我有一个问题,一旦我使用Popen,然后按ENTER键,python shell移动到后台,如下所示: >>> p = subprocess.Popen(shell=False, args=['/bin/sh', '-i'], stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE) >>> <ENTER> [1]+ […]

(Docker)中缺lessGOMP_parallel或GOMP_4.0 jupyter / all-spark-notebook:R和Python

我有一个关于GOMP的问题,我认为与gcc有关。 我使用这个图像作为一些实验的基础。 看来我正在使用基于这个未经修改的图像的一个好的版本(4.9.2),但是我得到了一些Cython相关软件包的一些奇怪的行为。 例1 在未修改的jupyter / all-spark-notebook docker镜像上运行时,试图运行Python时出现以下问题, import lightfm Traceback (most recent call last): File "", line 1, in File "/opt/conda/lib/python3.4/site-packages/lightfm/init.py", line 1, in from .lightfm import LightFM File "/opt/conda/lib/python3.4/site-packages/lightfm/lightfm.py", line 7, in from .lightfm_fast import (CSRMatrix, FastLightFM, ImportError: /opt/conda/lib/python3.4/site-packages/lightfm/lightfm_fast.cpython-34m.so: undefined symbol: GOMP_parallel 我已经尝试过的事情: 转到文件lightfm.py并将所有依赖关系移动到一行上,如下所示: from .lightfm_fast import (CSRMatrix, FastLightFM, fit_logistic, predict_lightfm, fit_warp, fit_bpr, […]

在bash中从python函数收集返回值

我正在实现一个将调用python脚本的函数/方法的bash脚本。 我想收集这个函数的返回值到调用bash脚本中的局部variables。 try1.sh包含: #!/bin/sh RETURN_VALUE=`python -c 'import try3; try3.printTry()'` echo $RETURN_VALUE 现在python脚本: #!/usr/bin/python def printTry(): print 'Hello World' return 'true' 关于删除bash脚本: $./tr1.sh Hello World 没有“真”或在那个地方任何其他types的回声标准输出所需。 另外一件事,我希望能够做的是,我的avtual python代码将有大约20-30个函数返回我的软件状态机的各种状态值,我会从bash脚本中调用这些函数。 在bash脚本中,我必须将这些返回值存储在本地variables中,这些variables将在调用bash脚本中实现的状态机逻辑中进一步使用。 对于每个值,我会做python -c'import python_module; python_module.method_name',这将重新枚举一次又一次,我不想要的状态机的定义状态。 我想避免使整个python脚本只用于调用一个函数。 那可能吗? 在这里可以想到什么可能的解决scheme/build议/想法? 我将不胜感激。 为了阐明我的意图,任务是让python脚本replace一部分bash脚本以提高可读性。 bash脚本实际上非常大(约15000行),因此不能完全由一个单独的python脚本replace。 所以可以被改进的部分可以被python替代。 另外,我曾想过在下面的评论中用Victor的build议来replace整个bash脚本,但是在我的情况下这是不可行的。 因此,我将不得不将状态机分成bash和python,其中python将有一些必需的方法返回bash脚本所需的状态值。 问候,优素福Husainy。

我怎样才能使用NETLINK套接字从PYTHON的内核空间的数据?

我怎样才能使用NETLINK套接字从PYTHON的内核空间的数据?

如何使python脚本在Shell上提示时按“enter”键

我想自动升级程序。 我用Python运行这个代码: import subprocess subprocess.call('./upgrade') 当我这样做的时候,我从shell获得了升级过程成功启动的输出,然后我得到了“按Enter键继续”。 我将如何自动化这个过程,以便Python脚本自动“按下”时inputproms? 我需要在这个过程中做两次。 我需要在Linux上完成这个工作,而不是在Windows上完成,因为这是在这里问的: 生成键盘事件另外,这需要在Shell提示input后专门完成。 谢谢你的帮助。 我没有find解决办法: 按Enter作为命令input

将IP转换为主机名

我想编写一个python脚本来将IP地址转换为主机名。 我正在使用Linux机器。 我没有在whois命令中看到这些信息。 是否有任何命令总是提供正确的主机名(尽可能准确)?

如何让脚本一直在linux下运行?

我试图一直运行一个简单的Python脚本。 我希望它在启动时自动启动,并能从故障中恢复。 也就是说,如果发生了导致脚本停止的失败,我并不在意,只是希望它能够再次开始运行。 如果整个设备重新启动,我很好。 我刚刚使用init.dtesting了一个工作脚本,但不知道如何从故障中恢复? 有一个cronjob检查一个PID的存在? 我也想检查完整性。 也就是说,我想确保脚本不会被其他进程意外修改。 我听说过检查一个CRC32的脚本对一个已知的值,但不知道如何得到正在执行的文件上的任何一种md5。 这是一个超级简单的Python脚本btw(一个文件,〜20lines)。 我不确定这是否真的改变了一切。

通过pip安装错误在virtualenv中安装lxml:命令'x86_64-linux-gnu-gcc'failed

当我激活virtualenv并input'pip install lxml'安装过程崩溃消息: /usr/bin/ld: cannot find -lz collect2: error: ld returned 1 exit status error: command 'x86_64-linux-gnu-gcc' failed with exit status 1

如何在Linux中包含Python模块?

我发现这个xgoogle python模块http://github.com/pkrumins/xgoogle ,非常有趣。 我到底应该如何在Linux中包含或安装这些文件? 如果我想用xgoogle python模块做这样的事情? >>from xgoogle.search import GoogleSearch 我知道我们可以使用from,import来使用模块,但是要包含一个外部模块,我该怎么做? 我应该需要安装模块还是什么?