导入语句的正确语法

Correct syntax for import statement

这里是新手

我想从另一个目录中的文件中导入一个 class,在这种情况下: C:\Users\jose_\Desktop\my_ref\stack_class.py,使用 from - import 语句。我在所述目录中有一个 init.py 文件,但无法在任何地方找到正确的语法。

导入部分怎么放C:\Users\jose_\Desktop\my_ref\stack_class.py

我尝试过使用其他两种方式:

exec(open("file path on windows").read())

和导入系统和sys.path.insert

他们都工作,试图用 import 语句来完成。

from C:\Users\jose_\Desktop\my_ref\stack_class.py import Stack #Error here
foo = Stack()

print(type(foo))

错误

  File "C:/Users/jose_/OneDrive/Mis_Documentos/Educacion/Linkedin/Ex_Files_Python_Data_Structures_Queues/Exercise_Files/Ch02/02_02/End/main2.py", line 4
    from C:\Users\jose_\Desktop\my_ref\stack_class.py import Stack
          ^
SyntaxError: invalid syntax

您确定将正斜杠“\”换成反斜杠“/”了吗?

尝试使用:

sys.path.extend('file path here') 

将文件夹路径添加到您的 python 路径,这样 python 知道在哪里寻找 stack_class 模块 - 或者在导入之前导航到文件夹

还要确保文件夹中的初始化文件名​​为 __init__.py

你应该可以做到

from stack_class import Stack

据我所知,您无法从 Python 中的文件路径导入。 您只能通过传递模块名称来导入:

import module.submodule
# then
module.submodule.sth()

from module.submodule import sth
# then
sth()

和Python将在sys.path.

中的所有目录中搜索module/submodule.pymodule/submodule/__init_.py

所以如果你想从你自己创建的另一个目录中的文件导入(不包括在 sys.path 列表中)你必须将该目录附加到列表中以告诉 Python 从哪里导入找到那个模块。尝试 运行:

import sys
sys.path.append('C:\Users\jose_\Desktop\my_ref')
from stack_class import Stack
# then
foo = Stack()
print(type(foo))

编辑

如果你不想附加到sys.path,你需要将你的模块移动到sys.path中的目录之一,例如,当前目录.是同样在 sys.path 中,否则 Python 将不知道模块在哪里(C:\ 不在 sys.path 中)。 Python 从不从 sys.path 中未包含的目录导入(我的意思是通过 import 语句)!