python:如何导入模块

python:如何导入模块,python,import,Python,Import,我是Python的新手。 我需要的很简单:动态导入模块。 这是我的小测试: #module class Test: def func(self, id, name): print("Your ID: " + str(id) + ". Your name: " + name) return 我把这个类放在一个名为my_module.py的文件中,该文件的路径是:c:\doc\my_module.py 现在我创建一个新的python项目来导入上面的文件。 以

我是Python的新手。
我需要的很简单:动态导入模块。

这是我的小测试:

#module
class Test:
    def func(self, id, name):
        print("Your ID: " + str(id) + ". Your name: " + name)
        return
我把这个类放在一个名为
my_module.py
的文件中,该文件的路径是:
c:\doc\my_module.py

现在我创建一个新的python项目来导入上面的文件。

以下是我所做的:

import sys
module = sys.path.append(r'c:\doc\my_module.py')
myClass = module.__class__
print(myClass)
然而,我得到了这个结果:

<class 'NoneType'>

为什么我不能进行
测试

是因为导入模块的方法错误,还是因为我需要进行一些配置才能导入模块?

尝试以下方法:

import sys
sys.path.append(r'c:\doc\')  # make sure python find your module

import my_module    # import your module 

t = my_module.Test() # Initialize the Test class
t.func(1, 'test')  # call the method
试试这个:

import sys
sys.path.append(r'c:\doc\')  # make sure python find your module

import my_module    # import your module 

t = my_module.Test() # Initialize the Test class
t.func(1, 'test')  # call the method

你做错了。下面是使用
sys.path.append导入模块的方法:

import sys                    # import sys
sys.path.append(r'c:\doc\')   # add your module path to ``sys.path``
import my_module              # now import your module using filename without .py extension
myClass = my_module.Test      # this is how you use the ``Test`` class form your module

你做错了。下面是使用
sys.path.append导入模块的方法:

import sys                    # import sys
sys.path.append(r'c:\doc\')   # add your module path to ``sys.path``
import my_module              # now import your module using filename without .py extension
myClass = my_module.Test      # this is how you use the ``Test`` class form your module

导入模块的方法是通过import命令。可以使用sys作为目录指定路径。您还需要在模块内实例化该类(通过my_module.Test())。见下文:

import sys
sys.path.append(r'c:\doc\\')
import my_module

myObj = my_module.Test()
myClass = myObj.__class__
print(myClass)

导入模块的方法是通过import命令。可以使用sys作为目录指定路径。您还需要在模块内实例化该类(通过my_module.Test())。见下文:

import sys
sys.path.append(r'c:\doc\\')
import my_module

myObj = my_module.Test()
myClass = myObj.__class__
print(myClass)

sys.path
是目录列表,而不是文件列表。是否不想
附加(r'c:\doc\)
?另外,将其附加到path不会加载模块,它只会添加一个额外的路径,在该路径中,
import
应该查找模块。@Stej如果我这样做,如何定位我要导入的py文件?请参阅下面由user2750362和Nhor发布的答案——将.py文件的目录添加到sys.path应该足以定位文件
sys.path
是目录列表,而不是文件。是否不想
附加(r'c:\doc\)
?另外,将其附加到path不会加载模块,它只会添加一个额外的路径,在该路径中,
import
应该查找模块。@Stej如果我这样做,如何定位我要导入的py文件?请参阅下面由user2750362和Nhor发布的答案--将.py文件的目录添加到sys.path应该足以定位文件我遇到此错误:AttributeError:module'my_module'没有属性'Test'您确定
my_module
中存在
Test
类吗这是因为我有另一个同名文件。无论如何,这个错误已经解决了。但是现在我有一个新的错误:IndentationError:unindent不匹配任何外部缩进级别Python是缩进敏感语言,所以您必须在文件中有适当的意图。有时在将空格与tab混合时也会发生这种情况。我得到了以下错误:AttributeError:module'my_module'没有属性'Test'。您确定
Test
类存在于
my_module
中吗?似乎是因为我有另一个具有相同文件名的文件。无论如何,这个错误已经解决了。但是现在我有一个新的错误:IndentationError:unindent不匹配任何外部缩进级别Python是缩进敏感语言,所以您必须在文件中有适当的意图。当您将空格与制表符混合使用时,有时也会发生这种情况