【发布时间】:2018-03-31 13:16:28
【问题描述】:
我正在尝试从多个目录设置一个 python 项目以保持其干净。我有一个父文件夹 project,以及两个子目录 project/sub1 和 project/sub2。
在 sub1 文件夹中,有一个名为 Thing.py 的文件,如下所示。里面只有一个类来保存一些变量。我也尝试过没有类,只是文件中的全局变量。两者都会导致相同的问题。
在 sub2 文件夹中,有一个文件尝试从 Thing.py 导入 class Thing。似乎导入不是问题,但是Thing 导入后没有属性,所以我不能使用它的任何东西。
我尝试查找从其他文件夹导入的内容(使用 sys 模块、sys.path.append(import path)) 以及有关 __init__.py 文件的内容,但我无法使其正常工作。
另外,如果我将文件复制到 sub2 文件夹,它可以正常导入。 print(dir()) 函数调用打印了一些东西,但我什么也没做。帮助将不胜感激。
谢谢。
project/sub1/Thing.py
class Thing:
a = 1
b = 2
project/sub2/导入文件
import sys
import tkinter as tk
from tkinter import ttk
sys.path.append(r"..\sub1")
import Thing
print(dir(Thing))
print(dir()) 输出
['__builtins__', '__cached__', '__doc__', '__file__', '__loader__',
'__name__', '__package__', '__path__', '__spec__']
【问题讨论】:
-
您正在将相对路径 (
..\sub1) 添加到您的sys.path。您确定要导入正确的Thing.py吗?尝试print(Thing.__file__)并仔细检查路径是否正确。 -
我确定,是的。我什至尝试过绝对路径,它们的行为方式相同。我打印了 Thing.__file__ 并得到了“..\Thing_init_.py”。