Python路径规则

时间:2017-12-31 13:11:48

标签: python pythonpath

我使用面向对象编程开始了一个项目,但是我在理解一些关于路径的基本规则时遇到了一些麻烦。

这是我项目的树状结构:

Project/
    main.py
    classes/
        Database.py
    database/
        Project.db

main.py

import sys
sys.path.insert(0, 'classes/')
from Database import Database

Database.py

import sys
sys.path.insert(0, '../database/')
import sqlite3

# in my Database class
def connect(self):
    self.conn = sqlite3.connect('database/{}.db'.format(self.name))
    self.c = self.conn.cursor()

在main.py VS中的实例化在Database.py中

ProjectDatabase = Database('Project')
ProjectDatabase.connect()

如果我在main.py文件中进行实例化并运行它,那么我就不需要更改Database.py文件中的任何内容。

但是,如果我在Database.py文件中进行实例化并运行它,那么我需要将connect方法更改为:

def connect(self):
    self.conn = sqlite3.connect('../database/{}.db'.format(self.name))
    self.c = self.conn.cursor()

我不明白为什么我需要这样做以及为什么我不必在Database.py中更改sys.path.insert()命令,如果我在main.py中进行实例化file ...为什么不应该只是sys.path.insert(' database /')呢?

我希望我能在这里清楚,我根本不知道应该如何在脚本中编写路径,具体取决于我们打算运行的脚本以及是否有其他嵌入式脚本,例如:课程调用主程序。

感谢您的解释!

1 个答案:

答案 0 :(得分:0)

如果您在main.py中初始化,那么main.py文件的目录将成为程序实例的根目录。因此,文件的所有引用都将从main.py文件所在的目录启动。

如果从database.py初始化而不是数据库文件夹目录成为程序实例的根目录,则需要根据数据库文件夹目录引用所有其他文件。

希望这有帮助。