小编Gia*_*olà的帖子

为Python +创建Windows安装程序以及一组依赖项

我需要为Windows创建一个安装程序,它应该能够安装特定版本的Python解释器(2.7)以及一组依赖项,如ipython,numpy,pandas等.

基本上,这与Active State为其Active Python发行版所做的一样:一个包括解释器+ deps的捆绑包.

不是Windows用户我不知道从哪里开始这个可能除了考虑NSIS(可能有任何帮助吗?).

python windows installer bundle nsis

14
推荐指数
3
解决办法
8512
查看次数

万无一失的跨平台进程杀死守护进程

我有一些python自动化,它产生telnet我用linux script命令记录的会话; script每个日志记录会话有两个进程ID(父级和子级).

我需要解决一个问题,如果python自动化脚本死了,script会话永远不会自己关闭; 由于某种原因,这比它应该更难.

到目前为止,我已经实现了watchdog.py(请参阅问题的底部)守护自身,并在循环中轮询python自动化脚本的PID.当它看到python自动化PID从服务器的进程表中消失时,它会尝试终止script会话.

我的问题是:

  • script会话总是产生两个独立的进程,其中一个script会话是另一个script会话的父进程.
  • watchdog.py script如果我script从自动化脚本启动会话,则不会终止子会话(请参阅下面的自动化示例)

自动化示例(reproduce_bug.py)

import pexpect as px
from subprocess import Popen
import code
import time
import sys
import os

def read_pid_and_telnet(_child, addr):
    time.sleep(0.1) # Give the OS time to write the PIDFILE
    # Read the PID in the PIDFILE
    fh = open('PIDFILE', 'r')
    pid = int(''.join(fh.readlines()))
    fh.close()
    time.sleep(0.1) …
Run Code Online (Sandbox Code Playgroud)

python linux process watchdog

9
推荐指数
1
解决办法
1835
查看次数

从Python Docstrings自动生成GitHub Wiki文档

标题说明了一切.我想象的是为我的所有模块,类和函数提供docstrings,并通过github(wiki?)以某种方式很好地导航文档.此外,文档应与最新代码同步,这意味着它应该在推送时更新/重新生成.那可能吗?

python markdown wiki docstring github

9
推荐指数
1
解决办法
2300
查看次数

日志记录与打印()+记录最佳实践的优点

我目前正在研究pyftpdlib模块的1.0.0版本.这个新版本将引入一些向后不兼容的更改,因为某些API将不再接受字节而是unicode.虽然我在这里,作为这个breackage的一部分,我正在考虑摆脱我的日志功能,当前使用print语句,并使用日志模块.

截至目前,pyftpdlib将日志记录委托给3个函数:

def log(s):
   """Log messages intended for the end user."""
   print s

def logline(s):
   """Log commands and responses passing through the command channel."""
   print s

def logerror(s):
   """Log traceback outputs occurring in case of errors."""
   print >> sys.stderr, s
Run Code Online (Sandbox Code Playgroud)

愿意自定义日志的用户(例如将它们写入文件)应该只是覆盖这三个函数,如:

>>> from pyftpdlib import ftpserver
>>>
>>> def log2file(s):
...        open('ftpd.log', 'a').write(s)
...
>>> ftpserver.log = ftpserver.logline = ftpserver.logerror = log2file
Run Code Online (Sandbox Code Playgroud)

现在我想知道:取消这种方法并使用日志记录模块意味着什么好处?从模块供应商的角度来看,我应该如何在模块中公开日志功能?我应该这样做:

import logging
logger = logging.getLogger("pyftpdlib")
Run Code Online (Sandbox Code Playgroud)

...并在我的doc中声明"logger"是在用户想要自定义日志行为的情况下应该使用的对象?故意设置预定义的格式输出是否合法:

FORMAT = '[%(asctime)] %(message)s'
logging.basicConfig(format=FORMAT)
logger = logging.getLogger('pyftpdlib')
Run Code Online (Sandbox Code Playgroud)

...? …

python logging

7
推荐指数
1
解决办法
2886
查看次数

easy_install或pip作为受限用户?

标准的python distutils提供了一个'--user'选项,允许我以有限的用户身份安装包,如下所示:

python setup.py install --user
Run Code Online (Sandbox Code Playgroud)

是否有easy_installpip的等价物?

python pip easy-install

7
推荐指数
1
解决办法
1万
查看次数