Python包名称可以以数字开头吗?

时间:2013-07-05 10:55:00

标签: python

我知道命名一个以数字开头的Python模块是一个坏主意,如this other question中所述,但我想知道在Python包中是否合法,而不是模块(也就是文件) )。

例如。我想将Django网站与一些外部API集成,我想创建一个“第三方”软件包,其中包含每个提供商的文件,我不知道调用它3rd_party是否会成为头痛或我应该将其命名为third_party,以避免出现问题。

注意:我不知道是否重要,但我使用的是Python 2.7

2 个答案:

答案 0 :(得分:18)

不,它不能。 Python包和模块名称必须是valid identifiers

identifier ::=  (letter|"_") (letter | digit | "_")*

标识符必须以字母或下划线开头。

import statement将模块的语法定义为:

module          ::=  (identifier ".")* identifier

包是一种特殊的模块(实现为具有__init__.py文件的目录),并且不受这些规则的约束。

技术上您可以通过不使用import语句解决此问题,因为importlib模块和__import__挂钩不会强制执行限制。但是,为您的软件包或模块命名,以便您需要使用非标准导入机制才能使其正常工作,这不是一个好主意。

答案 1 :(得分:4)

# 1/x.py dont forget 1/__init__.py
x = 42

从其他文件导入

# test.py
p1 = __import__('1.x')
print p1.x.x