Python不接受导入模块名称' - '

时间:2016-11-15 07:20:00

标签: python linux ubuntu

我有一个名为' downloadflat-modular.py'的模块,python无法导入此模块

Python 3.4.0 (default, Apr 11 2014, 13:05:11) 
[GCC 4.8.2] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import downloadflat-modular
  File "<stdin>", line 1
    import downloadflat-modular
                       ^
SyntaxError: invalid syntax
>>> from downloadflat-modular import *
  File "<stdin>", line 1
    from downloadflat-modular import *
                     ^
SyntaxError: invalid syntax
>>> 

这是限制吗?

uname -a
Linux ubuntu 3.16.0-30-generic #40~14.04.1-Ubuntu SMP Thu Jan 15 17:43:14 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux

3 个答案:

答案 0 :(得分:4)

包名称是标识符,因此它们不能包含连字符。

python中的标识符必须以开头,并带有小写/大写字母或下划线,并且可以在名称的其余部分包含数字。

根据PEP8,建议的风格如下:

https://www.python.org/dev/peps/pep-0008/#package-and-module-names

  

模块应该有简短的全小写名称。如果提高可读性,则可以在模块名称中使用下划线。 Python包也应该有简短的全小写名称,但不鼓励使用下划线。

答案 1 :(得分:2)

你可以说,这是一种限制。

-是减法运算符,因此Python将downloadflat-modular解释为“downloadflat减去modular”,这在import语句后是不允许的。< / p>

基本上,您不能(也不应该)使用-符号在Python中命名任何内容。

答案 2 :(得分:2)

是的,python import只能接受有效的标识符。

选择是:

  1. 您可以将文件更改为downloadflat_modular.py,然后更改为import downloadflat_modular
  2. 或者您可以使用importlib.import_module("downloadflat-modular")