2017-09-20 79 views
-1

正常工作,我想在Python 2.7版的样本包只是为了澄清我的概念,它的结构是这样的:的__init__.py不蟒蛇

 calculator/ 
    main.py 
    operations/ 
     file1.py 
     file2.py 
     __init__.py 
     new_operations/ 
      __init__.py 
      file3.py

main.py的内容:(该文件存在里面计算器文件夹)

from operations import power 
print power(2,2) 

初始化的.py内容:(该文件是本内部操作文件夹)

from .file1 import add 
from .file1 import sub 
from .file2 import mul 
from .file2 import div 

file1.py内容:(该文件是本内部操作文件夹)

def add(a,b): 
    return(a+b) 

def sub(a,b): 
    return(a-b) 

file2.py内容:(该文件是本内部操作文件夹)

def mul(a,b): 
    return(a*b) 

def div(a,b): 
    return(a/b) 

INIT的.py内容:(该文件是本里面new_operations文件夹)

from .file3 import power 

file3.py内容:(该FI乐存在new_operations文件夹)中

def power(a,b): 
    return(a**b) 

现在,当我运行“main.py”,我得到了以下错误:

Traceback (most recent call last): 
    File "C:\Python27\mycodes\calculator\main.py", line 3, in <module> 
    from operations import power 
ImportError: cannot import name power 

谁能告诉我,我在做什么错误?帮我。

+1

但在这一切什么会导致你认为'calculator.add'将工作?你认为你在哪里定义它? –

+0

'计算器'不是一个包,并且没有'add'。 'operations'是一个包,你可以从'import add'操作,但'calculator'不是一个包。 – user2357112

回答

1

使用以下命令行中的“main.py”文件:

from operations.new_operations import power 
0

您在计算器模块中缺少'添加'功能。如果你创建一个'添加'功能,我会假设代码会起作用。

也许尝试在模块计算器这样做:

def add(num1,num2): 
    print(num1+num2) 
    return num1+num2; 

如果你不希望它在计算打印,删除打印语句。

希望这有助于!