扭曲的插件在 Ubuntu 12.04 和 18.04 中有不同的结果



我正在设计一个简单的基于Twisted插件方法的LoRaWAN UDP服务器。它在两台PC上给了我不同的结果。

  1. 阿里云 ECS, Ubuntu 12.04(32位(, Python 2.7.3, 扭曲 15.0.0
  2. 物理 PC, Ubuntu 18.04(64 位(, Python 2.7.15, 扭曲 17.9.0

我的项目中有以下插件树。

$ tree lorawan_server/
lorawan_server/
├── LoRaWANPktFwd.py
├── run.sh
├── shutdown_twistd.sh
├── start_plugin_twistd.sh
└── twisted
└── plugins
└── LoRaWANPktFwd_plugin.py

LoRaWANPktFwd.py:

#!/usr/bin/env python
#coding: utf-8
from __future__ import print_function
import getopt
import os
import sys
import string
import struct
import binascii
import time
import uuid
from twisted.internet.protocol import DatagramProtocol
from twisted.internet import reactor, protocol, defer
from twisted.python import log
from twisted.enterprise import adbapi
class LoRaWANPktFwd(DatagramProtocol):
def datagramReceived(self, data, addr):
# A simple echo server
self.transport.write(data, addr)
def main():
log.startLogging(sys.stdout)
reactor.listenUDP(1700, LoRaWANPktFwd())
reactor.run()
if __name__ == "__main__":
main()

LoRaWANPktFwd_plugin.py:

from zope.interface import implements
from twisted.application.service import IServiceMaker
from twisted.application import internet
from twisted.plugin import IPlugin
from twisted.python import usage
from LoRaWANPktFwd import LoRaWANPktFwd
class Options(usage.Options):
optParameters = [["port","p", 1700, "The port number to listen on."]]
class LoRaWANPktFwdServiceMaker(object):
implements(IServiceMaker, IPlugin)
tapname = "LoRaWAN"
description = "A Raw UDP-based LoRaWAN Packet Forwarder server."
options = Options
def makeService(self, options):
return internet.UDPServer(int(options["port"]), LoRaWANPktFwd())
serviceMaker = LoRaWANPktFwdServiceMaker()

如果我输入:

twistd LoRaWAN

那么 Ubuntu 18.04 会抱怨如下:

/usr/bin/twistd: Unknown command: LoRaWAN

而 Ubuntu 12.04 将开始运行,在同一个文件夹中创建了 twistd.pid 和 twistd.log。

我不知道为什么会这样。最新扭曲的任何插件更新?还是与系统或其他东西有关?

扭曲15 和扭曲 17.9 在自动包含$PWD方面具有不同的行为sys.path。 扭曲 15 可以,扭曲 17.9 没有。

将包含项目的路径添加到PYTHONPATH(也许通过创建一个 virtualenv 并使用 pip 将项目进行可编辑的安装(和 Twisted 17.9 将找到代码,因此也可以找到您的插件。

最新更新