导入 类 - Python

Importing classes - Python

早上好,我遇到了以下问题。准确地说,我有以下设置:

Project_Name
|
|--> __init__.py
|
|--> Tool1
|      |
|      |--> Object1.py
|      |
|      |--> __init__.py
|
|--> Tool2
       |
       |--> Object2.py
       |
       |--> __init__.py

其中 Project_name,Tool1 和 Tool2 是文件夹。 Object2 包含一个名为 'House' 的 class。如何在 Object1 中使用 class 'House'?我尝试了以下方法:

from Tool2.Object2 import House

但我收到错误消息“没有名为 'Tool2' 的模块。

我做错了什么?所有 init.py 文件都是空的,我应该更改它吗?

您需要将 PYTHONPATH 导出到您的 Project_Name,以便解释器知道要查找的特定文件夹。

export PYTHONPATH=path/to/your/project

例如:

object1.py

from tool2.object2 import House

house = House()
house.print_message("Hello World!!!")

object2.py

class House(object):
    def __init__(self):
        pass
    
    def print_message(self, text):
        print(text)

导出前后的输出PYTHONPATH

$ python tool1/object1.py                                                                                                                                                                                                                       
Traceback (most recent call last):
  File "tool1/object1.py", line 2, in <module>
    from tool2.object2 import House
ImportError: No module named tool2.object2

$ pwd                                                                                                                                                                                                                                      
/Users/.../Whosebug

$ export PYTHONPATH=/Users/.../Whosebug                                                                                                                                                                

$ python tool1/object1.py                                                                                                                                                                                                                       
Hello World!!!

$ python object1.py                                                                                                                                                                                                                       
Hello World!!!

1

如果您使用的是 VS 代码,最简单的解决方法是启动正在执行的脚本,如下所示。

import sys

sys.path.append('/PATH/TO/Project_Name')

import Tool1.Object1

...

2

或者,您可以将环境变量PYTHONPATH添加到settings.json(可以找到ctrl + shift + P然后键入settings.json

    "terminal.integrated.env.linux": {
        "PYTHONPATH": "/PATH/TO/Project_Name/"
    }

这样,你就可以

import Tool1.Object1

sys.pathPYTHONPATH 将为您做同样的事情。