Python:导入自己的文件。为什么“导入myFile”不起作用?

时间:2019-04-30 08:09:21

标签: python import

要构建我的python项目,我想将代码分成不同的文件。

我发现了有关导入here的大量指南,示例1似乎很符合我的需求。

因此,我使用以下代码创建文件part.py

print("Hello world")

def myFunction():
    print("This is my function!")

然后我在同一文件夹中创建了destination.py

import part
# from part import *

myFunction()

我期望import part将运行part.py的整个代码,我的最终结果是

Hello world
This is my function!

但是,我得到了

ModuleNotFoundError                       Traceback (most recent call last)
 in ()
----> 1 import part
      2 # from part import *
      3 
      4 myFunction()

ModuleNotFoundError: No module named 'part'

使用# from part import *而不是import part会导致相同的错误。

我在做什么错了?


编辑: @hiro主角: 我将一个空的__init__.py文件放入同一词典。重新启动内核后,运行destination.py中的所有代码时,我会(注意hello world):

Hello world
---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
 in ()
      2 # from part import *
      3 
----> 4 myFunction()

NameError: name 'myFunction' is not defined

再次运行destination.py中的所有代码后,我只能得到

---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
 in ()
      2 # from part import *
      3 
----> 4 myFunction()

NameError: name 'myFunction' is not defined

如果我现在作为第三个动作,运行part.py中的所有代码,我将得到

Hello world

然后我可以运行destination.py中的所有代码来获取

This is my function!

如果我只能一次又一次地运行destination.py而获得相同的结果,我会更喜欢。

@Nullman: part.py是文件,但import .part抛出

 File "", line 1
    import .part
           ^
SyntaxError: invalid syntax

@Jeyekomon: 我正在Windows 10和Python 3.7.0上使用Visual Studio Code。

@ 9769953: 我直接在Visual Studio代码中运行代码

2 个答案:

答案 0 :(得分:0)

模块导入问题现在似乎已解决。尽管__init__.py文件在Python 3中通常是no longer needed,但是您正在使用的Visual Studio代码似乎仍然需要它。

其余的问题与使用模块有关。从official Python tutorial了解创建和使用模块的基础。模块part应该包含可以在主文件destination中调用的函数:

destination.py

import part

part.say_hello()
part.myFunction()
part.say_hello()

part.py

def say_hello():
    print("Hello world")

def myFunction():
    print("This is my function!")

答案 1 :(得分:-1)

将您的destination.py更改为:

from part import *
myFunction()

对我有用