Почему не работает эта функция микропитона?

Я написал функцию на микропитоне, которая пытается получить неименованную информацию и вырезать ненужные мне вещи, а затем вернуть значение:

       import os

 def get_uname():      
     my_uname = os.uname()[3]
     my_uname = my_uname.replace("(GNU 9.3.0 MinSizeRel)", "") 
     my_uname = my_uname.replace(" on ", "-")
     my_uname = my_uname.replace(" ", "") 
     return my_uname

Каждый раз, когда я пытаюсь импортировать его как модуль, я получаю сообщение об ошибке:

       import sw-ver
 Traceback (most recent call last):
 File "<stdin>", line 1
 SyntaxError: invalid syntax

Однако, если я скопирую и вставлю функцию непосредственно в repl, она будет успешной, без ошибок:

       >>> import os
 >>> def get_uname():  
 ...     my_uname = os.uname()[3]
 ...     my_uname = my_uname.replace("(GNU 9.3.0 MinSizeRel)", "")
 ...     my_uname = my_uname.replace(" on ", "-")
 ...     my_uname = my_uname.replace(" ", "")
 ...     return my_uname
 ...     
 ...     
 ... 
 >>> get_uname()
 'v1.14-2021-02-05'
 >>> 

Я пробовал все, что мог, я переименовал файл на всякий случай, если это было причиной проблемы. Есть ли у кого-нибудь предложения по устранению этой проблемы?

Благодарность!

1 ответ

Решение

Если вы поместили свою функцию в файл sw-ver.py, вам будет сложно импортировать его с помощью import sw-veras используется для арифметики и так далее, даже в этом контексте. Если вы не можете переименовать свой файл, см. Здесь , но самый простой ответ - следовать руководству по стилю и использовать только строчные буквы для модулей или, по крайней мере, _ вместо -.

Другие вопросы по тегам