Создание асинхронной проблемы с Python на сервере Modbus - PullRequest
0 голосов
/ 23 октября 2018

Я новичок в Python и пытаюсь создать сервер Modbus с модулем pymodbus.Я следую инструкциям по ссылке , но когда я запускаю скрипт, я получаю сообщение об ошибке:

$ python2.7 server1.py    
INFO:pymodbus.server.async:Starting Modbus TCP Server on 192.168.1.100:502    
Traceback (most recent call last):    
File "server1.py", line 83, in <module>    
StartTcpServer(context, address=("192.168.1.100", 502))    
File "/home/pi/.local/lib/python2.7/site-packages/pymodbus/server/async.py",     
line 255, in StartTcpServer    
reactor.listenTCP(address[1], factory, interface=address[0])    
File "/home/pi/.local/lib/python2.7/site-     
packages/twisted/internet/posixbase.py", line 495, in listenTCP    
p.startListening()    
File "/home/pi/.local/lib/python2.7/site-packages/twisted/internet/tcp.py",     
line 1363, in startListening    
raise CannotListenError(self.interface, self.port, le)    
twisted.internet.error.CannotListenError: Couldn't listen on     
192.168.1.100:502: [Errno 13] Permission denied.    

Любой может помочь мне решить мою проблему, заранее спасибо.


[ ОБНОВЛЕНИЕ ]:

$ sudo python2.7 server1.py    
Traceback (most recent call last):    
File "server1.py", line 12, in <module>     
from pymodbus.server.async import StartTcpServer    
ImportError: No module named pymodbus.server.async    

$ python -V    
Python 2.7.13

$ sudo python server1.py
Traceback (most recent call last):
File "server1.py", line 12, in <module>
from pymodbus.server.async import StartTcpServer
ImportError: No module named pymodbus.server.async    

Я уже попробовал «sudo» и получил ошибку, похоже, что когда я использую «sudo», модули находятся не в нужном месте...

1 Ответ

0 голосов
/ 23 октября 2018

Попробуйте с разрешением sudo:

$ sudo python2.7 server1.py 

Или если ваш python связан с Python 2.7 следующим образом:

$ python -V
Python 2.7.14

Затем попробуйте:

$ sudo python server1.py

[ОБНОВЛЕНИЕ]:

Следующие строки должны быть одинаковыми:

$ which python
/usr/bin/python

$ sudo which python
/usr/bin/python

Если ваши коды работают в одном и том жемашина, вы можете использовать localhost или 127.0.0.1 IP вместо IP машины.


[ ПРИМЕЧАНИЕ ]:

Если ваша ОС * nix основана на системе, и у вас установлен брандмауэр ufw, выполнитеследующая команда:

$ sudo ufw disable
...