from pack.mod import f
Run Code Online (Sandbox Code Playgroud)
如何从对象f获取有关导入的信息 - 'pack.mod'
我可以使用它,f.__module__
但如果函数def在模块中我得到这个属性(f.__module__
)它返回'__main__'
.但我需要真正的道路 - 'pack.mod'
我找到了这种方式来获取这些信息:
inspect.getmodule(f).__file__
Run Code Online (Sandbox Code Playgroud)
然后我可以开始分从路径sys.path
,更换/
上.
并获得类似的路径- 'pack.mod'
但可能存在一些更便捷的途径?
我正在尝试使用start-stop-daemon启动python脚本:
sudo /sbin/start-stop-daemon --start --pidfile /home/loop.pid \
--user www-data --group www-data -b --make-pidfile --chuid www-data \
--exec /usr/bin/python /home/loop.py --verbose
Run Code Online (Sandbox Code Playgroud)
但我的进程中没有python脚本.我做错了什么?
loop.py:
import time
while True:
print "working..."
time.sleep(3)
Run Code Online (Sandbox Code Playgroud) 我尝试用asyncore做简单的异步http客户端:这段代码工作正常,输出是(快速执行):
www.gmail.com : recv http code: 301
www.yandex.ru : recv http code: 200
www.python.org : recv http code: 200
www.google.ru : recv http code: 200
www.gravatar.com : recv http code: 302
www.com.com : recv http code: 302
www.yahoo.com : recv http code: 302
www.bom.com : recv http code: 301
Run Code Online (Sandbox Code Playgroud)
但是,与我不存在主机的取消注释:
#c = AsyncHTTP('http://www.no-such-host.ru') #!this line breaks execution!
Run Code Online (Sandbox Code Playgroud)
执行中断,代码挂起一段时间,输出部分数据并挂起,没有最后的数据输出:
connection error: [Errno -5] No address associated with hostname
www.gmail.com : recv http code: 301
www.yandex.ru : recv http code: 200
www.yahoo.com …
Run Code Online (Sandbox Code Playgroud) def log(func):
def wraper(*a, **kw):
return func(*a, **kw)
return wraper
@log
def f():
print 'f'
print locals()['f'] # - prints <function wraper at 0x00CBF3F0>.
Run Code Online (Sandbox Code Playgroud)
你如何获得真正的f对象(不是装饰器包装)?