Python从另一个目录调用文件

2024-05-13 18:43:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我一直在试图找到这个问题的答案,但我所看到的一切都是从另一个目录读取一个文件,或者从另一个目录运行一个文件。我不知道这叫什么,但我不知道该怎么做。在

我有一个python脚本运行.py在/src目录中。我从/src目录运行该脚本。运行.py调用两个文件(配置.py以及服务器.py). 这两个文件位于一个名为lib(src/lib)的文件夹中,所有文件夹都有一个空的__init__.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,我知道必须更改的代码的两个部分如下:

^{pr2}$

我想我不得不放置库在他们之前喜欢这样,但每次我尝试它都会说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目录中,有人知道如何针对这些文件吗


Tags: 文件pathpyimportsrc目录脚本node
2条回答

我明白了。我认为你的答案在某些情况下可能是有效的,但我认为我的新问题是想知道要搜索什么。在

那是一个系统参数所以在导入文件之前,我必须包含到lib文件夹的路径。在

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


import configuration
import server

您只需更改导入语句以反映模块的新位置:

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

你剧本的其他部分也不需要改变。在

相关问题 更多 >