繁体   English   中英

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

[英]Python: Importing own files. Why does “import myFile” not work?

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

我在此处找到了有关导入的大量指南,示例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 ,请运行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 Code中运行代码

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

其余的问题与使用模块有关。 官方Python教程中学习创建和使用模块的基础知识。 模块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!")

将您的destination.py更改为:

from part import *
myFunction()

这对我行得通

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM