【发布时间】:2019-04-30 08:09:20
【问题描述】:
为了构建我的 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 并得到相同的结果,我会更喜欢它。
@纳尔曼:
part.py是文件,但 import .part 抛出
File "", line 1
import .part
^
SyntaxError: invalid syntax
@Jeyekomon: 我在带有 Python 3.7.0 的 Windows 10 上使用 Visual Studio Code。
@9769953: 我直接在 Visual Studio Code 中运行代码
【问题讨论】:
-
在
part.py的同一目录下是否有__init__.py文件(可能为空)?这个目录在PYTHONPATH吗? -
在同一文件夹中创建一个空的
__init__.py文件 -
part是一个文件吗?如果它只是一个文件并且您从同一个目录运行,则需要使用import .part,注意点。如果部分是一个模块,请确保在同一目录中有一个__init__.py文件,并且 python 知道它在哪里 -
您的代码对我来说很好用。您使用的是什么操作系统?你使用的是什么版本的 Python?你用什么命令来运行你的代码?错误的格式与我习惯的不同。
-
你如何运行你的代码?你用
python destination.py吗?