Python从另一个目录调用文件

Python从另一个目录调用文件,python,laravel-5,Python,Laravel 5,我一直在试图找到这个问题的答案,但我看到的一切都是从另一个目录读取文件或从另一个目录运行文件。我确信我想做的并不是那么难,但我对这方面还不熟悉,不知道如何描述它的名称 我在/src目录中有一个python脚本run.py。我从/src目录运行该脚本。run.py调用两个文件(configuration.py和server.py)。这两个文件位于一个名为lib(src/lib)的文件夹中。所有文件夹都有一个空的\uuuu init\uuuu.py文件 当我从lib中取出这些文件并将它们放在src中

我一直在试图找到这个问题的答案,但我看到的一切都是从另一个目录读取文件或从另一个目录运行文件。我确信我想做的并不是那么难,但我对这方面还不熟悉,不知道如何描述它的名称

我在/src目录中有一个python脚本run.py。我从/src目录运行该脚本。run.py调用两个文件(configuration.py和server.py)。这两个文件位于一个名为lib(src/lib)的文件夹中。所有文件夹都有一个空的
\uuuu init\uuuu.py
文件

当我从lib中取出这些文件并将它们放在src中时,当脚本看起来像下面那样时,我可以运行脚本

import os
import inspect
import sys


import configuration
import server


# Initialize Parameters
f_path = os.path.abspath(inspect.getfile(inspect.currentframe()))
absolute_path = os.path.dirname(f_path)


if __name__ == "__main__":
    from optparse import OptionParser, OptionGroup

    parser = OptionParser()

    parser.usage = "usage: %prog [options] "

    parser.description = "Primary application entry point."

    parser.add_option("-v", "--verbose", dest="verbose", action="store_true",
                  default=False, help="Run verbose.")

    group = OptionGroup(parser, "Node operations")

    group.add_option("--do-queue-job", dest="do_queue_job", action="store_true",
                 help="Run the next job in the quasar-server queue.")

    parser.add_option_group(group)

    (options, args) = parser.parse_args()

    # Clear argv to prevent issues with web.py automatically using arguments to
    # bind ip addresses.
    sys.argv = []

    configuration = configuration.Configuration("/home/mscarpa/PhpstormProjects/quasar-node/quasar-node/quasar-node/src/config.yml")


    if (options.do_queue_job):
        # Get server instance
        server_connection = server.QuasarConnection(configuration)
        #return server_connection

        # Get next job from server
        next_job = server_connection.get_next_job()
        #return next_job
如果我将这两个文件移动到/src/lib,我知道我必须更改代码的两部分如下:

    configuration = configuration.Configuration("/home/mscarpa/PhpstormProjects/quasar-node/quasar-node/quasar-node/src/config.yml")

    server_connection = server.QuasarConnection(configuration)
我想我只需要像这样把.lib放在它们前面,但每次我尝试它时,它都会说lib没有定义

    configuration = lib.configuration.Configuration("/home/mscarpa/PhpstormProjects/quasar-node/quasar-node/quasar-node/src/config.yml")

    server_connection = lib.server.QuasarConnection(configuration)

这可能是一个noob问题,但是如果文件位于src/lib目录而不是src目录中,有人知道如何定位这些文件吗?您只需要更改import语句以反映模块的新位置:

import lib.configuration as configuration
import lib.server as server

脚本的其余部分实际上不需要更改。

我知道了。我认为你的答案在某些情况下可能有效,但我认为我在这方面的新问题是弄清楚要搜索什么

这是一个sys.arg文件,所以在导入文件之前,我必须包含lib文件夹的路径

sys.path.insert(0, '/home/mscarpa/PhpstormProjects/quasar-node/quasar-node/quasar-node/src/lib')


import configuration
import server

这是有道理的——我仍然会得到一个错误,尽管和以前一样,上面写着ImportError:没有名为lib的模块。configuration@MichaelScarpalib文件夹是否包含init.py文件以及configuration.py文件?