Articles of python 3.x

Python asyncio:在工作线程上运行subprocess_exec

所以我使用Python asyncio模块(在Linux上)启动subprocess,然后asynchronous监视它。 我的代码工作正常…在主线程上运行时。 但是,当我在一个工作线程上运行它时,它挂起,并且process_exitedcallback从不被调用。 我怀疑这可能实际上是某种未经证实的缺陷或在工作线程上运行subprocess_exec问题,可能与实现如何在后台线程中处理信号有关。 但也可能是我搞砸了。 一个简单的,可重现的例子如下: class MyProtocol(asyncio.SubprocessProtocol): def __init__(self, done_future): super().__init__() self._done_future = done_future def pipe_data_received(self, fd, data): print("Received:", len(data)) def process_exited(self): print("PROCESS EXITED!") self._done_future.set_result(None) def run(loop): done_future = asyncio.Future(loop = loop) transport = None try: transport, protocol = yield from loop.subprocess_exec( lambda : MyProtocol(done_future), "ls", "-lh", stdin = None ) yield from […]

无法初始化窗口并等待进程在Python 3 + GTK + 3中结束

我对于面向对象编程,Python和GTK + 3很陌生,尽pipe我对程序编程有一定的了解(主要是C)。 我正在尝试构build一个简单的Python + GTK + 3脚本来在Linux下运行pkexec apt-get update 。 我有一个mainWindow类(基于一个Gtk.Window类),它包含一个名为button (基于一个Gtk.Button类)的button对象,它触发一个clicked事件时在mainWindow定义的new_update_window()方法; new_update_window()方法从一个updateWindow类(基于一个Gtk.Window类)初始化一个updateWindow对象,该类包含一个名为label的标签对象(基于一个Gtk.Label类),并调用Gtk.Label show_all()和update()在updateWindow ; update()方法应该改变label ,运行pkexec apt-get update并再次更改label 。 问题是无论我做什么,发生下列之一: 如果直接运行subprocess.Popen(["/usr/bin/pkexec", "/usr/bin/apt-get", "update"]) , update.Window显示update.Window ,但label会立即设置为应该设置的值只有在pkexec apt-get update完成执行后才能设置; 如果直接运行subprocess.call(["/usr/bin/pkexec", "/usr/bin/apt-get", "update"]) ,直到pkexec apt-get update执行完成才会显示pkexec apt-get update ; 我尝试import threading ,在updateWindow定义一个单独的run_update()方法,并使用thread = threading.Thread(target=self.run_update) , thread.start() , thread.join()在单独的线程中启动函数。仍然取决于我在run_update() ( run_update() subprocess.call()或run_update()调用哪个方法,上面描述的相关行为performance出来。 文艺青年最爱的 我不知道如何去完成我之后的事情,那就是: 显示updateWindow ( […]

PIP安装泡菜不工作 – 没有这样的文件或目录

Ubuntu 16.04 LTS,试图用pip安装cpickle。 我查了一下,还没有find有用的东西。 PYTHONPATH没有设置。 错误信息 user@hostname:~$ sudo -H pip3 install cpickle Collecting cpickle Using cached cpickle-0.5.tar.gz Complete output from command python setup.py egg_info: Traceback (most recent call last): File "<string>", line 1, in <module> File "/usr/lib/python3.5/tokenize.py", line 454, in open buffer = _builtin_open(filename, 'rb') FileNotFoundError: [Errno 2] No such file or directory: '/tmp/pip-build-wn926hef/cpickle/setup.py' —————————————- […]

两个Python程序之间的进程间消息传递

我们有两个在两台Linux服务器上运行的Python程序。 现在我们想在这些Python程序之间发送消息。 到目前为止最好的想法是创build一个TCP / IP服务器和客户端架构,但这似乎是一个非常复杂的方式来做到这一点。 这是做这种事情的最佳做法吗?

Tensorflow安装失败,“模块的编译时版本3.5与运行时版本3.6不匹配”

我尝试从pip安装: pip3 install –user –no-cache https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-1.4.0-cp36-cp36m-linux_x86_64.whl 然后尝试导入并得到: Using TensorFlow backend. /usr/lib64/python3.6/importlib/_bootstrap.py:205: RuntimeWarning: compiletime version 3.5 of module 'tensorflow.python.framework.fast_tensor_util' does not match runtime version 3.6 return f(*args, **kwds) 2017-11-10 09:35:01.206112: I tensorflow/core/platform/cpu_feature_guard.cc:137] Your CPU supports instructions that this TensorFlow binary was not compiled to use: SSE4.1 SSE4.2 AVX 问题: 我不明白为什么轮子说3.6,但我得到了3.5的警告 我想编译为我的CPU优化,所以我可以使用点安装从源而不是从二进制轮?

如何用Python 3支持安装PyGObject

我一直在尝试使用各种方法来安装PyGObject。 首先,使用apt-get但只安装Python 2.x. 接下来我试图自己编译它,但是我一直在为Python 3编译时遇到问题。 有谁知道如何安装它?

os.setuid不会改变当前用户

我想改变脚本执行的当前用户。 我做到了 import os newuid = pwd.getpwnam('newuser').pw_uid os.setuid(newuid) print('User :' + getpass.getuser()); 我仍然得到root 。 有没有比这更好的方法? 我希望切换用户一次,然后继续在脚本中使用该新用户执行命令的其余部分。

在Ubuntu 12.04中安装OpenCV for Python。 dist-packages或site-packages中没有模块?

按照这里给出的步骤,我已经完成了安装过程,但是Python(IDLE)给了我一个ImportError。 本指南build议: Python可能会返回一个像“ No module named cv ”这样的错误。问题是python模块安装在/usr/local/lib/python2.6/site-packages 。 但是,在Debian和Ubuntu上,Python仅查找/usr/local/lib/python2.6/dist-packages 您可以使用三种方法解决问题(只使用其中一种,第一种是最好的): 将cv.so文件从site-packages移到dist-packages : sudo mv /usr/local/lib/python2.6/site-packages/cv.so /usr/local/lib/python2.6/dist-packages/cv.so 但是,2.7和3.2的站点包和dist-packages都是空的。 出了什么问题,我该如何解决?

如何在家里安装python3.4'not root'? surepip失败

我在Red Hat Linux机器上没有root权限,我正在安装python3.4。 已下载的Python-3.4.1.tgz tar -xzf Python-3.4.1.tgz ./configure makealtinstall –with-ensurepip=install prefix=~ exec-prefix=~ Python3安装,但我没有点子。 我得到以下错误: 忽略ensurepip失败:pip 1.5.6需要SSL / TLS 我没有root访问权限,所以我无法安装通过: sudo apt-get install libssl-dev openssl 我有一个openssl的工作版本。 有没有人有我可以尝试的build议?

无需密码即可远程closures/重新启动Linux机器

我正在写一个pyQt客户端 – 服务器应用程序,远程重新启动/closuresPC。 接收方正在监听networking是否收到消息,发送方向选定的接收方发送重启/closures消息。 以下部分代码在接收器上运行: import os self.currentOS = calling a function to determine the current OS if self.currentOS == "Win": os.system("shutdown -r -f -t 1") elif self.currentOS == "Lin": os.system("shutdown -r now") 我有两个虚拟机作为接收器,一个在Windows上,另一个在Linux上。 当我发送重新启动消息到Windows接收器时,机器重新启动。 当我发送一个重启消息到Linux接收器, 它要求input密码 Incoming:EXEC_OP_RESTART [sudo] password for jwalker: 我需要改变什么来克服这个问题? 是shutdown -r now唯一的方法,或者我可以做另一种方式(更直接)? 编辑:在这个问题中,使用了一个叫做dbus东西,它没有密码,我正在寻找dbus作为替代。