/projects/mymath$ ls
__init__.py  __init__.pyc  mymath.py  mymath.pyc  tests


在目录tests

/projects/mymath/tests/features$ ls
steps.py  steps.pyc  zero.feature


我试图导入我的阶乘函数

sys.path.insert(0,"../../")
#import mymath
from mymath.MyMath import factorial


但是它说没有名为MyMath的模块。

这是我的虚拟MyMath类。

class MyMath(object):

        def factorial(self, number):
                if n <= 1:
                        return 1
                else:
                        return n * factorial(n-1)


那怎么了谢谢。这甚至是一个好习惯吗(编辑sys路径?)

这将工作import mymath

最佳答案

据我所知,这是正确的。没有名为mymath.MyMath的模块。虽然有一个名为mymath.mymath的模块...

明确地说,当您创建一个文件夹并将一个__init__.py文件放入其中时,您已经创建了一个包。如果您的__init__.py文件为空,则仍然必须显式导入软件包中的模块。因此,您必须执行import mymath.mymath才能将mymath模块导入名称空间。然后,您可以通过mymath.mymath.MyMath访问所需的内容,依此类推。如果要直接导入该类,则必须执行以下操作:

from mymath.mymath import MyMath


正如其他人已经解释的那样,您不能从类中导入方法。您必须导入整个类。

关于python - 如何导入我的模块?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9508406/

10-12 21:18