Articles of python

Python套接字库认为套接字是不是打开

我正在处理一些Python,看起来像这样: HOST = '127.0.0.1' PORT = 43434 single = socket.socket(socket.AF_INET, socket.SOCK_STREAM) try: single.bind((HOST, PORT)) except socket.error as e: # Print an error, exit. 虽然过去运行良好,但是现在我们已经得到错误[Errno 98] Address already in use 。 SIGINT处理程序closures套接字连接,所以我不确定它是如何得到这种状态,但现在我只是想解决它。 lsof和netstat都说没有使用该端口: [$]> sudo netstat -an | grep 43434 [$]> sudo lsof -i :43434 根据/proc/sys/net/ipv4/tcp_fin_timeout , TIME_WAIT被设置为60秒,但是在最后一次运行成功之后甚至几个小时都会发生错误。 我试过(暂时)设置REUSEADDR (通过single.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) ),但似乎没有任何效果。 什么在tarnation是怎么回事? 我能够再次使用这个端口而不必重新启动机器吗?

python Pipes的同步/asynchronous行为

在我的应用程序中,我使用多处理模块中的pipe道在python进程之间进行通信。 最近我观察到一个奇怪的行为取决于我通过他们发送的数据的大小。 根据python文档,这些pipe道是基于连接的,并且应该以asynchronous的方式运行,但是有时他们在发送时会卡住。 如果我在每个连接中启用全双工,一切工作正常,即使我没有使用连接发送和收听。 任何人都可以解释此行为? 100浮点数,全双工禁用 代码工作,利用asynchronous。 100个浮点,全双工启用 该示例正常工作正常。 10000浮点数,全双工禁用 尽pipe数据较小,但执行被永久封锁。 10000浮点,全双工启用 再次罚款。 代码(这不是我的生产代码,它只是说明了我的意思): from collections import deque from multiprocessing import Process, Pipe from numpy.random import randn from os import getpid PROC_NR = 4 DATA_POINTS = 100 # DATA_POINTS = 10000 def arg_passer(pipe_in, pipe_out, list_): my_pid = getpid() print "{}: Before send".format(my_pid) pipe_out.send(list_) print "{}: […]

Python – 使用/ SSH使用远程主机的envvariables

任何有关这个问题的帮助将不胜感激。 基本上我正在写一个Python脚本,将ssh到各种服务器上,并执行脚本。 问题是这些脚本使用一个envvariables来启动。 即脚本是test.sh,但我们使用一个envvariables来启动它,运行test.sh. 到目前为止,我采取的路线,如Paramiko模块执行命令,但实际上并没有采取envvariables。 import paramiko ssh = paramiko.SSHClient() ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) ssh.connect('testserver' ) stdin, stdout, stderr = ssh.exec_command(cd /home/test/;$run ./test.sh') print stdout.readlines() print stderr.readlines() ssh.close() 有没有办法使用paramiko? 或者我应该采取另一种方式? 谢谢 @罗布 我编辑脚本来testing。 $ runvariables回来了。 stdin, stdout, stderr = ssh.exec_command('whoami;echo hello; echo $run ; echo goodbye') ['testuser\n', 'hello\n', '\n', 'goodbye\n'] [] @罗布部分2 login到服务器,我可以echo $ run,并返回正确的path/脚本我也检查,这是一个ENVvariables设置在.profile。 我觉得像python不调用.profile。

你如何更新到最新的python 3.5.1版本的覆盆子pi?

我昨天得到了我的树莓派,我已经试着用它编码了。 我有一个计划,我打算运行它,但它只与Python版本3.5.0或3.5.1兼容,我发现在互联网上的一切似乎是过时的,与Python 2做或不相关到我的问题,因为我还没有看到任何其他的100%需要Python 3.5,可以应付3.4(目前预安装)。 .exe文件在Linux上不起作用。 我是Raspberry Pi和Linux的新手,因为我一直是Windows用户。 任何帮助表示赞赏。 非常感谢 – 罗伯特

分配独立的libpythonpath

在较新的Ubuntu / Debian版本下, libpython2.7.so位于/usr/lib/i386-linux-gnu/libpython2.7.so或/usr/lib/x86_64-linux-gnu/libpython2.7.so之下早些时候,无论架构如何,都可以在/usr/lib/libpython2.7.sofind它们。 我没有检查其他分布。 如何findPython的libpython2.7.so的path?

启动一个应用程序在heroku? 什么是procfile? 'web:'命令?

我指的是这个网站,因为我正在学习python / flask并尝试使用heroku。 http://ryaneshea.com/lightweight-python-apps-with-flask-twitter-bootstrap-and-heroku 让我解释一下我所做的一切,让任何像我一样卡住的人都可以得到照片。 我正在使用Linux Backtrack命令行。 1.我启动了virtualenv,然后安装了flask virtualenv –distribute pip install flask 然后,连接的heroku和github,在github中也创build了一个回购。 写了一个简单的脚本,并保存在app.py 然后,要求创build一个procfile! web:python app.py 问题。 1.通俗文件中的procfile是什么? 2.当我inputweb:python app.py时,它显示'web :: command not found' 请详细说明这是如何工作的? 我还有一个疑问,sudo是至高无上的用户权利? 我们不应该在virtualenv中使用它? 而对于我们使用virtualenv究竟是什么? 一个简单的例子。 问题是非常基本的。 裸露。

如何永久添加Python导入path?

我知道我可以像这样添加一个Python的导入path: import sys sys.path.append("/path/to/directory/") 但是,当我重新启动Python时,这是消失了。 如果我不得不一直这样做,我会觉得非常烦恼,我希望一劳永逸地做到这一点,并做到这一点。 又怎样? 我在哪里可以find该文件? 还是我需要编辑别的东西? 我正在使用最新版本的Ubuntu。

standard_init_linux.go:178:exec用户进程导致“exec格式错误”

docker工人开始抛出这个错误: standard_init_linux.go:178:exec用户进程导致“exec格式错误” 每当我运行CMD或ENTRYPOINT的特定docker集装箱时,不考虑对其他文件的任何更改,然后删除CMD或ENTRYPOINT。 这里是我一直在工作的docker文件,完美的工作,直到大约一个小时前: FROM buildpack-deps:jessie ENV PATH /usr/local/bin:$PATH ENV LANG C.UTF-8 RUN apt-get update && apt-get install -y –no-install-recommends \ tcl \ tk \ && rm -rf /var/lib/apt/lists/* ENV GPG_KEY 0D96DF4D4110E5C43FBFB17F2D347EA6AA65421D ENV PYTHON_VERSION 3.6.0 ENV PYTHON_PIP_VERSION 9.0.1 RUN set -ex \ && buildDeps=' \ tcl-dev \ tk-dev \ ' \ && apt-get update && […]

在cli中指定Python模块

我试图从Linux的SSH安全壳命令行环境运行一个python脚本,我试图导入argparse库,但它会给出错误:“ImportError:No module named argparse”。 我认为这是因为Linux shell所使用的Python环境没有argparse库,我想我可以修复它,如果我能findPython环境使用的库的目录,将argparse库复制到它,但我无法find该目录所在的位置。 我将不胜感激find这个目录的任何帮助(我想我可以将argparse库包含在我的python脚本所在的目录中,但是我更愿意在其他Python库所在的地方拥有argparse库,因为它应该)。

限制内存使用

我在一台16GB RAM和64位操作系统的Linux机器上运行Python 2.7。 我写的一个python脚本可以把太多的数据加载到内存中,这会使机器变慢,甚至不能再杀死进程。 虽然我可以通过调用来限制内存: ulimit -v 12000000 在运行脚本之前在我的shell中,我想在脚本中包含一个限制选项。 在我看来, resource模块被认为具有与ulimit相同的权力。 但是打电话: import resource _, hard = resource.getrlimit(resource.RLIMIT_DATA) resource.setrlimit(resource.RLIMIT_DATA, (12000, hard)) 在我的脚本开始什么都没有。 即使设置低至12000的值也不会使程序崩溃。 我也尝试了与RLIMIT_STACK相同的结果。 奇怪的是,呼吁: import subprocess subprocess.call('ulimit -v 12000', shell=True) 什么都不做。 我究竟做错了什么? 我在网上找不到任何实际使用的例子。