如何避免扭曲tac文件中的重要错误?

2024-09-30 14:22:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个扭曲的tac文件_服务.py)有一个代码:

from twisted.application import service
# application.py file in the same dir
from .application import setup_reactor


class WebsocketService(service.Service):

    def startService(self):
        service.Service.startService(self)
        setup_reactor()

application = service.Application("ws")

ws_service = WebsocketService()
ws_service.setServiceParent(application)

给你应用程序.py文件,设置反应堆:

^{pr2}$

我使用twistd -noy twisted_service.py命令来运行twisted服务。它一直在为Twisted16.3.2版本工作。升级到任何下一个版本后,我收到错误:

Unhandled Error
Traceback (most recent call last):
  File "/home/kalombo/.virtualenvs/dev/local/lib/python2.7/site-packages/twisted/application/app.py", line 662, in run
    runApp(config)
  File "/home/kalombo/.virtualenvs/dev/local/lib/python2.7/site-packages/twisted/scripts/twistd.py", line 25, in runApp
    _SomeApplicationRunner(config).run()
  File "/home/kalombo/.virtualenvs/dev/local/lib/python2.7/site-packages/twisted/application/app.py", line 380, in run
    self.application = self.createOrGetApplication()
  File "/home/kalombo/.virtualenvs/dev/local/lib/python2.7/site-packages/twisted/application/app.py", line 445, in createOrGetApplication
    application = getApplication(self.config, passphrase)
--- <exception caught here> ---
  File "/home/kalombo/.virtualenvs/dev/local/lib/python2.7/site-packages/twisted/application/app.py", line 456, in getApplication
    application = service.loadApplication(filename, style, passphrase)
  File "/home/kalombo/.virtualenvs/dev/local/lib/python2.7/site-packages/twisted/application/service.py", line 412, in loadApplication
    application = sob.loadValueFromFile(filename, 'application')
  File "/home/kalombo/.virtualenvs/dev/local/lib/python2.7/site-packages/twisted/persisted/sob.py", line 177, in loadValueFromFile
    eval(codeObj, d, d)
  File "twisted_service.py", line 3, in <module>
    from .application import setup_reactor
exceptions.ImportError: No module named application

如何正确运行twisted或import模块?在


Tags: inpydevhomeapplicationlibpackageslocal
2条回答

我找到的答案几乎是你的。如下所示:

import os
import sys

sys.path = [os.path.join(os.getcwd(), '.'), ] + sys.path

只需将当前工作目录添加到搜索路径. 在

但是我没有找到更好的方法。。。。我觉得这不太好。在

我在这里找到了答案http://twistedmatrix.com/pipermail/twisted-python/2016-September/030783.html

它是Twisted 16.4.0中的一个新特性。在以前的版本中,twistd脚本自动添加了工作目录到系统路径,从16.4.0版本开始我必须手动添加它。可以在twisted中添加类似这样的内容_服务.py文件:

import os
import sys
TWISTED_DIR = os.path.dirname(os.path.abspath(__file__))
sys.path.append(TWISTED_DIR)

相关问题 更多 >