Python模块导入包含。及_

Python模块导入包含。及_,python,python-import,Python,Python Import,问题: 我想将模块(名称:Ex3.2_myModule)导入文件(名称:Ex3.2_Test.py)。它们在同一个目录中。为了做到这一点,我尝试了在关于这个主题的其他几次讨论中提出的几个选项(即屏幕截图)(即和)。他们两个都不工作 截图:: 问题:如何在不更改模块名称的情况下导入此模块 代码: Ex3.2_Test.py # 1 import Ex3.2_myModule as mm #2 mm = __import__("Ex3.2_myModule") #3 impo

问题: 我想将模块(名称:Ex3.2_myModule)导入文件(名称:Ex3.2_Test.py)。它们在同一个目录中。为了做到这一点,我尝试了在关于这个主题的其他几次讨论中提出的几个选项(即屏幕截图)(即和)。他们两个都不工作

截图::

问题:如何在不更改模块名称的情况下导入此模块

代码

Ex3.2_Test.py

# 1
import Ex3.2_myModule as mm

#2
mm = __import__("Ex3.2_myModule")

#3
import importlib
mod = importlib.import_module("Ex3.2_myModule")


mm.helloWorld()
Ex3.2_myModule.py

def helloWorld():
    print("Hello, World")
解决方案
提出的解决方案终究是可行的。非常感谢@a_guest指出这一点

这种情况很棘手,因为点表示python的子包结构。尽管如此,imp仍然有可能:

import imp
mm = imp.load_source('mm', 'Ex3.2_myModule.py')

mm.helloWorld()
注意:这是非正统的,建议您只需重命名模块即可


鉴于这可能是一个练习,您应该重命名您的模块。

这种情况很棘手,因为点表示python的子包结构。尽管如此,imp仍然有可能:

import imp
mm = imp.load_source('mm', 'Ex3.2_myModule.py')

mm.helloWorld()
注意:这是非正统的,建议您只需重命名模块即可

鉴于这可能是一个练习,您应该重命名您的模块。

以下内容是从我的机器上的作品中窃取的

from importlib.util从加载程序导入规范,从规范导入模块
从importlib.machine导入SourceFileLoader
spec=spec_from_loader(“Ex3.2_myModule”),SourceFileLoader(“Ex3.2_myModule”,“\\Ex3.2_myModule.py”))
mm=模块规格(规格)
规格加载器执行模块(mm)
嗯你好
帮助(mm)
其中Ex3.2_myModule.py的内容为

def hello():
打印(“你好,世界!”)
我的机器上的以下部件被盗

from importlib.util从加载程序导入规范,从规范导入模块
从importlib.machine导入SourceFileLoader
spec=spec_from_loader(“Ex3.2_myModule”),SourceFileLoader(“Ex3.2_myModule”,“\\Ex3.2_myModule.py”))
mm=模块规格(规格)
规格加载器执行模块(mm)
嗯你好
帮助(mm)
其中Ex3.2_myModule.py的内容为

def hello():
打印(“你好,世界!”)

请在帖子中而不是屏幕截图中提供代码。什么是“将模块导入文件”?如果要从文件导入模块,则必须更改文件名,或使用
importlib
模块。
import
语句将
视为将包名与包含的模块名分开,而不是作为单个模块名的一部分。@tjallo:谢谢您的输入@切普纳:这可能是个愚蠢的问题,但Ex3.2_Test.py不是我导入模块的文件吗?这回答了你的问题吗?请您在帖子中提供代码,而不是在屏幕截图中。什么是“将模块导入文件”的意思?如果要从文件导入模块,则必须更改文件名,或使用
importlib
模块。
import
语句将
视为将包名与包含的模块名分开,而不是作为单个模块名的一部分。@tjallo:谢谢您的输入@切普纳:这可能是个愚蠢的问题,但Ex3.2_Test.py不是我导入模块的文件吗?这回答了你的问题吗?自Python 3.4以来,该模块已被弃用。不幸的是,这对我不起作用。我应该把这给我的错误贴在哪里?@Pewepow这是为了某种(学校)练习吗?(由于命名Ex3.2)如果是,请更改名称。如果他们在名称更改方面给您带来困难,只需向他们解释模块中的小数点代表子包。在模块名称中使用它们是不恰当的,而且是非音速的,这是一种糟糕的做法。如果他们给你带来困难,他们实际上是在教你糟糕的做法。我知道这不是你问题的答案。但我认为这是你问题的答案!;)@你说得对。这是一种不好的做法,我将更改文件名。然而,我仍然想知道是否有一种方法可以使用当前的名称。我必须承认,我可能有点固执:)该模块自Python 3.4以来就被弃用了。不幸的是,这不适合我。我应该把这给我的错误贴在哪里?@Pewepow这是为了某种(学校)练习吗?(由于命名Ex3.2)如果是,请更改名称。如果他们在名称更改方面给您带来困难,只需向他们解释模块中的小数点代表子包。在模块名称中使用它们是不恰当的,而且是非音速的,这是一种糟糕的做法。如果他们给你带来困难,他们实际上是在教你糟糕的做法。我知道这不是你问题的答案。但我认为这是你问题的答案!;)@你说得对。这是一种不好的做法,我将更改文件名。然而,我仍然想知道是否有一种方法可以使用当前的名称。我得承认,我可能有点固执:)