Python无法导入,导入错误:没有名为

Python无法导入,导入错误:没有名为,python,import,cmd,Python,Import,Cmd,我是python新手,我正在尝试将一些值从一个文件导入到另一个文件。 我希望我的“程序”从main_file.py转到其他文件,如calculator.py,然后返回main_file.py 为此,我决定创建一个先前运行过的变量,其值为's'。 当计算器被激活时,通过命令,它会选择这个变量 (然后将其返回给main_file.py,它将检查变量的值,然后跳过它自己的脚本的一些行,如果以前运行的变量的值为's'): …然后calc.py将从main_file.py中选择变量…: import pr

我是python新手,我正在尝试将一些值从一个文件导入到另一个文件。 我希望我的“程序”从main_file.py转到其他文件,如calculator.py,然后返回main_file.py

为此,我决定创建一个先前运行过的变量,其值为's'。 当计算器被激活时,通过命令,它会选择这个变量 (然后将其返回给main_file.py,它将检查变量的值,然后跳过它自己的脚本的一些行,如果以前运行的变量的值为's'):

…然后calc.py将从main_file.py中选择变量…:

import previously_runned from main_file
……返回:

  File "C:\Users\Kevin\Prog\Calc.py", line 72, in <module>
  import main_file
  ImportError: No module named main_file
文件“C:\Users\Kevin\Prog\Calc.py”,第72行,在
导入主文件
ImportError:没有名为main\u文件的模块

谢谢你的帮助

当您执行
os.system()
时,它是一个完全独立的Python进程;它不会与实际运行
os.system()
调用的Python实例共享任何变量。也就是说,如果您更改以前从calc.py运行的内容,它将不会反映在主文件中

您真正想要在这里使用的是函数;功能是比模块更好的控制流单元。听起来你可能还没有用Python做到这一点,所以我认为现在你应该坐以待毙——你所尝试的是一个良好的迹象,表明你做得很好,但在你习惯于定义和调用函数之前,这是没有意义的

坚持下去!Python非常棒

我希望我的“程序”从main_file.py转到其他文件,如 calculator.py,然后返回主_file.py

下面是一个简单的示例,其中执行从main.py开始;它从calc.py调用函数。函数返回后,执行将移回main.py的下一行

james@brindle:tmp$cat main.py
import calc

value1 = "10"
value2 = "20"

def main():
    sum = calc.add(value1, value2)
    print sum

if __name__ == "__main__":
    main()
james@brindle:tmp$cat calc.py
def add(value_a, value_b):
    print "In ur calc.py, doin ur sumz"
    return value_a + value_b
james@brindle:tmp$python main.py 
In ur calc.py, doin ur sumz
1020

请注意,这并没有使
main.py
中定义的内容可以从
calc.py
访问-它做了相反的操作,并使
calc.py
中的内容可以从
main.py
中访问,正如AdamKG已经指出的那样,您需要函数。您有两个选项,要么使calc.py包含函数并导入该函数,要么将函数包含在主文件中。例如:

main.py

def calc(var1,var2,var3):
    ans1 = var1 + var2
    ...
    return(ans1,ans2,ans3)

var1 = ...
var2 = ...
var3 = ...

ans1,ans2,ans3 = calc(var1,var2,var3)
也许我能推荐的最好的python教程/参考是官方的: docs.python.org/tutorial/

我希望我的“程序”从main_file.py转到其他文件,如calculator.py,然后返回main_file.py

因此,在
main_file.py
中,您导入计算器,然后调用在
calculator.py
中定义的函数,并将它所需的信息(来自
main_file
的变量)作为参数传递给函数。

os.system()执行作为子shell中的参数提供的命令。这意味着它生成一个新进程来执行命令,并且不共享调用进程的变量。您想要实现的是更好地使用类和函数

假设calc.py和main.py位于同一文件夹中,下面是一个简单的函数示例。请注意,这个例子只是为了解释,它使用了一些糟糕的编程实践,比如可以避免的全局变量

calc.py

main.py

您可以看到我们如何从
main.py
调用
calc.py
中的代码,而不产生任何新进程

下面是另一个使用类的示例。这是一种更干净、结构更好的方法,并且不使用全局变量之类的坏做法

calc_class.py

main_class.py

用法-
d:\vikesh\personal\stuff>python main.py
九,

d:\vikesh\personal\stuff>python main\u class.py
42
我的名字是My Calc

哇,是的,函数(在主_文件中实现)更出色!
main.py

def calc(var1,var2,var3):
    ans1 = var1 + var2
    ...
    return(ans1,ans2,ans3)

var1 = ...
var2 = ...
var3 = ...

ans1,ans2,ans3 = calc(var1,var2,var3)
var1 = None
var2 = None

def set_variables(a,b):
    global var1, var2
    var1 = a
    var2 = b


def calculate(s):
    if s=='add':
        print var1 + var2
    elif s=='sub':
        print var1 - var2
    elif s=='div':
        print var1/var2
    elif s=='mul':
        print var1*var2
    else:
        print "Invalid Operation"
from calc import *

set_variables(4,5)
calculate('add')
raw_input()
class Calculator:
    def __init__(self,s):
        #init code
        self.s = s

    def __str__(self):
        return self.s

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

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

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

    def mul(self,a,b):
        return (a*b)
from calc_class import *

calc = Calculator('My Calc')
print calc.add(40,2)
print "My name is %s "%calc