给定一个带有模块名称的字符串,如何导入模块中的所有内容,就像调用了:
from module import *
Run Code Online (Sandbox Code Playgroud)
即给定字符串S ="模块",如何得到相当于以下内容:
__import__(S, fromlist="*")
Run Code Online (Sandbox Code Playgroud)
这似乎没有按预期执行(因为它不会导入任何东西).
我知道从一个数字开始命名一个Python模块是一个坏主意,正如另一个问题所述,但我想知道在Python包中是否合法,而不是模块(aka文件).
例如.我想一个Django网站与一些外部API的整合,我想创建一个"第三者"包,包含文件对每个供应商,我不知道,如果调用它3rd_party会成为一个头痛或我应该命名third_party相反,避免问题.
注意:我不知道它是否重要,但我使用的是Python 2.7
Python程序如何从具有任意名称的文件轻松导入Python模块?
标准库导入机制似乎没有帮助.一个重要的限制是我不希望出现附带的字节码文件 ; 如果我imp.load_module在一个名为的源文件上使用foo,fooc则会出现一个名为的文件,这是一个混乱和混乱.
Python导入机制期望它最好地知道文件名是什么:模块文件位于特定的文件系统位置,特别是文件名具有特定的后缀(foo.py对于Python源代码等)而没有其他文件系统位置.
这与另一个约定冲突,至少在Unix上:将作为命令执行的文件应该在不引用实现语言的情况下进行命名.例如,执行"foo"的命令应该在名为foono suffix 的程序文件中.
但是,对这样的程序文件进行单元测试需要导入该文件.我需要程序文件中的对象作为Python模块对象,准备在单元测试用例中进行操作,就像import我给出的那样.
导入模块的Pythonic方法是什么,特别是从名称不以文件结尾的文件.py,没有出现该导入的字节码文件?
我尝试了这个问题的答案但无济于事,所以我认为值得单独提出一个问题。目录布局如下:
aale/
2/
2.py
__init__.py
3/
3.py
__init__.py
__init__.py
Run Code Online (Sandbox Code Playgroud)
不幸的是,这些名称无法更改(这是针对硬件问题为我们提供的布局)。我正在尝试导入,2但3似乎不起作用。我尝试使用importlib为:
two = importlib.import_module('2.2')也
two = importlib.import_module('2')
这也不起作用(给出了ModuleNotFoundError: No module named '2'错误)。任何帮助/其他方法将不胜感激。我正在使用Python 3.6。
我有一个函数ispalindrome在文件中命名 8.py如何导入它?如果我可以使用此名称创建.py文件,为什么8是无效的名称
from 8 import ispalindrome
Run Code Online (Sandbox Code Playgroud) 当我尝试在python(.py文件)中导入模块时,它会出现语法错误.模块名称以数字开头.这是语法错误的原因吗?