Как я могу исправить SyntaxError: неверный синтаксис / импорт * из Modbus? - PullRequest
0 голосов
/ 31 марта 2020

Я хочу получить файл .exe из исходного кода, но выполнение python main.py build приводит к этой ошибке:

C:\MyProject>python main.py build
Traceback (most recent call last):
File "main.py", line 5, in <module>
import parserz as parser
File "C:\MyProject\parserz.py", line 9
import * from modbus
       ^
SyntaxError: invalid syntax

Любая идея, пожалуйста? Может быть проблема с пипом?

Ответы [ 3 ]

1 голос
/ 31 марта 2020

Вы можете либо импортировать модуль и запустить весь нормальный код с помощью

import modbus

, либо вы можете импортировать все классы, функции, переменные и т. Д. c., Из файла для последующего использования в вашем код с

from modbus import *

Чтобы проиллюстрировать мою точку зрения:

Если у вас есть два файла my_imports.py и main.py , которые содержит следующий код:

my_imports.py:

print('Imported module my_imports')

def add_nums(a,b):
    return a+b

def another_function():
    return 'this function was also called'

(версия 1) main.py:

import my_imports

# this code would fail because the function isn't imported
print(add_nums(5,7))

(версия 2) main.py:

from my_imports import *

print(add_nums(5,7))
print(another_function())
  • В версии 1 файла main.py вы увидите Imported module my_imports в выводе, но ваш код потерпит неудачу, когда вы попытаетесь использовать функцию add_nums, определенную в my_imports.py .
  • В версии 2 файла main.py вы все равно увидите Imported module my_imports в выводе, но вы также увидите результат вызова двух других функций в выводе, поскольку они теперь доступны для использования в main.py :
12
this function was also called
* 105 4 * Как уже упоминалось в некоторых других ответах, вы также можете просто импортировать нужные функции из другого python скрипта. Например, если вы хотите использовать только метод add_nums, вы можете вместо этого иметь
from my_imports import add_nums

в вашем main.py .

1 голос
/ 31 марта 2020

В python вы импортируете вот так

from modbus import *

Кроме того, в python рекомендуется импортировать только то, что вам нужно.

Так что вам не следует использовать from .... import * вместо этого используйте

from modbus import something
0 голосов
/ 31 марта 2020

Обычно from modbus import * должно быть достаточно. Но обычно импортировать все не очень хорошая идея, поэтому я рекомендую import modbus as mb. Также вы можете посмотреть библиотеки Modbus, такие как pyModbus или minimalModbus. Вот хорошая ссылка с описанием их плюсов и минусов: Python библиотека Modbus

...