我需要为Windows创建一个安装程序,它应该能够安装特定版本的Python解释器(2.7)以及一组依赖项,如ipython,numpy,pandas等.
基本上,这与Active State为其Active Python发行版所做的一样:一个包括解释器+ deps的捆绑包.
不是Windows用户我不知道从哪里开始这个可能除了考虑NSIS(可能有任何帮助吗?).
我有一些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) 标题说明了一切.我想象的是为我的所有模块,类和函数提供docstrings,并通过github(wiki?)以某种方式很好地导航文档.此外,文档应与最新代码同步,这意味着它应该在推送时更新/重新生成.那可能吗?
我目前正在研究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 distutils提供了一个'--user'选项,允许我以有限的用户身份安装包,如下所示:
python setup.py install --user
Run Code Online (Sandbox Code Playgroud)
是否有easy_install和pip的等价物?