我一直在试图找到这个问题的答案,但我所看到的一切都是从另一个目录读取一个文件,或者从另一个目录运行一个文件。我不知道这叫什么,但我不知道该怎么做。在
我有一个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目录中,有人知道如何针对这些文件吗
我明白了。我认为你的答案在某些情况下可能是有效的,但我认为我的新问题是想知道要搜索什么。在
那是一个系统参数所以在导入文件之前,我必须包含到lib文件夹的路径。在
您只需更改导入语句以反映模块的新位置:
你剧本的其他部分也不需要改变。在
相关问题 更多 >
编程相关推荐