Articles of python

设置Linux以使用特定版本的python进行编译

我正在运行Ubuntu来编译一组需要python 2.4的代码。 我怎样才能设置terminal启动器,以便当我打开启动所有python相关的命令将使用python 2.4,而不是在Ubuntu默认的python 2.6?

如何在没有root权限的机器上安装virtualenv

我想在我没有root权限的Linux机器上安装virtualenv。 我看到了nettuts的屏幕录像( http://net.tutsplus.com/tutorials/python-tutorials/python-power-tools-virtualenv/ ),并试图按照步骤,但得到以下错误。 任何帮助表示赞赏。 /home/x01010/python/virtualenv-1.9.1 > which python /opt/xpyv/bin/python /home/x01010/python/virtualenv-1.9.1 > python virtualenv.py foo PYTHONHOME is set. You *must* activate the virtualenv before using it Traceback (most recent call last): File "virtualenv.py", line 2577, in <module> main() File "virtualenv.py", line 979, in main no_pip=options.no_pip) File "virtualenv.py", line 1081, in create_environment site_packages=site_packages, clear=clear)) File "virtualenv.py", […]

python的fcntl.flock函数是否提供文件访问的线程级locking?

Python的fcnt模块提供了一个名为[flock] [1]的方法来certificate文件locking。 它的描述如下: 对文件描述符fd执行锁操作op(也接受提供fileno()方法的文件对象)。 有关详细信息,请参阅Unix手册(2)。 (在某些系统上,这个函数是用fcntl()模拟的。) 查看flock的linux手册页,只涉及到跨进程locking,例如: 对flock()的调用可能会阻止另一个进程持有不兼容的锁。 要做出一个非阻塞的请求,包括LOCK_NB(ORing)与上述任何操作。 所以我的问题是:将flock()还提供线程安全locking和locking同一进程内的多个线程以及来自不同进程的线程? [1]: http : //docs.python.org/library/fcntl.html#fcntl.flockfunction是使用fcntl()模拟的。)

从subprocess更改父进程的目录

我创build了一个很酷的Python程序,可以帮助用户以交互方式导航到其他目录。 当他们到达那里,我想让他们击中input并退出程序,留在选定的目录。 然而,你总是最终在同一个目录,你开始在B / C只有subprocesspython的运行实际上改变目录和父进程的目录保持不变。

如何读取argv值而无需转义string?

我正在写一个名为flac2m4a的python脚本,它调用ffmpeg将.flac文件转换为.m4a文件。 核心程序是这样的: cmd = "ffmpeg -i %s -acodec alac %s.m4a" % (sys.argv[1], sys.argv[1][:-5]) os.system(cmd) 我可以使用这样的程序: ./flac2m4a path_to_the_song.flac 但是当我用一些特殊字符的名字来运行它时, ./flac4m4a.py Justin\ Bieber\ -\ Never\ Say\ Never\ -\ The\ Remixes/01\ -\ Never\ Say\ Never\ \(feat.\ Jaden\ Smith\).flac 在linux下,当我按Tab键自动完成时,特殊的字符会被一个\转义,但是当我从sys.argv[1]读取它们时,它们将被Python转换成普通的string: Justin Bieber – Never Say Never – The Remixes/01 – Never Say Never (feat. Jaden Smith).flac 所以我只是想知道如何阅读argv[1]完全按照用户input(与这些\ )

卸载从源生成的PIL

我使用这个教程来安装PIL。 现在,我想卸载它,并安装pillow的地方。 mkdir -p ~/src ~/lib/python2.7 cd ~/src wget http://effbot.org/media/downloads/PIL-1.1.7.tar.gz tar zxf PIL-1.1.7.tar.gz cd PIL-1.1.7 python2.7 setup.py build_ext -i python2.7 setup.py install 我如何卸载PIL? PS:我没有安装任何我的virtualenvs PIL。 这是一个全球性的安装。 但是,我正在使用virtualenvs来处理所有的项目。

stream式audio和video

我一直在尝试一段时间,但挣扎。 我有两个项目: 将audiostream式传输到服务器以通过networking分发 将audio和video从networking摄像头传输到服务器,以通过networking分发。 到目前为止,我已经尝试了ffmpeg和ffserver,PulseAudio,mjpegstreamer(我得到了这个工作,但没有audio)和IceCast都没有运气。 虽然我确定这可能是我的错,但我想知道是否还有其他的select? 我花了一段时间尝试Linux的select,也想知道是否有与Python最近玩OpenCV的选项。 如果任何人都可以提出更多的select来研究Python或Linux的基础上,将不胜感激或指向我一些很好的教程或解释我已经使用它将不胜感激。

我怎样才能创buildMySQL数据库的增量备份

我有mysql5.6 Linux mysql5.6 centos 6.4服务器 我有这样的每小时一次的mysql数据库备份的cron工作 它在python中 os.popen("mysqldump -u %s –password=%s -h %s -e –opt –skip-lock-tables –skip-extended-insert -c %s | gzip -c > %s.gz" % (username, password, hostname, database, filename)) 问题是数据变得很less,但每次我必须备份所有数据库24次,这占用了太多的空间。 什么是最好的select 有什么办法进行增量备份,这样我就可以对数据库进行1次完整备份,每周只进行一次增量备份。 我想单独的数据库不是所有的单独的文件MySQL,所以如果我需要恢复单个数据库,那么我也可以做到这一点

如何使用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]+ […]