正确的导入语句语法

时间:2019-07-18 01:24:29

标签: python python-3.x windows directory python-import

新手在这里

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

如何将C:\Users\jose_\Desktop\my_ref\stack_class.py放入导入部分?

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

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

以及导入sys和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

3 个答案:

答案 0 :(得分:0)

您是否确定将正斜杠“ \”切换为反斜杠“ /”?

答案 1 :(得分:0)

尝试使用:

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

将文件夹路径添加到您的python路径中,那样python知道在哪里寻找stack_class模块-要么在导入前要么导航到该文件夹​​

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

您应该可以做到

from stack_class import Stack

答案 2 :(得分:0)

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

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

from module.submodule import sth
# then
sth()

Python将在module/submodule.py中所有目录中搜索module/submodule/__init_.pysys.path

因此,如果要从自己创建的另一个目录(不包含在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语句)!