gpt4 book ai didi

Python:如何从另一个文件夹导入脚本,该文件夹也在本地导入具有相对路径/本地文本文件的其他脚本?

转载 作者:太空宇宙 更新时间:2023-11-03 21:04:22 26 4
gpt4 key购买 nike

我得到了一个可以独立运行的 python 程序。结构是这样的,有一个 .py 文件(我们称之为 app.py),它从附近的文件夹导入许多其他脚本并使用它们来做某事。这些其他模块具有本地 config.txt 文件,并且还导入其他本地模块。

我想在其他地方有自己的脚本来导入这个“app.py”并从中调用一个函数。问题是:我想调用的这个函数依赖于相对导入到 app.py 本身的其他模块,当我尝试将 app.py 导入到我的脚本中时,它告诉我我找不到该应用程序的相对导入。 py 有。

我已经做了相当多的挖掘(添加 __init.py__ 文件,使用 system.path.append/插入我现在非常熟悉的东西),我发现当我尝试运行我的它成为当前工作目录,并且无法找到从 app.py 导入的任何相对目录(由我的脚本导入),因为它很简单不存在。

我能做什么,我可以用绝对路径导入所有内容,或者将每个包/文件夹添加到系统路径,但由于有超过 10 个包,我不想这样做。如果我移动 app.py 和它周围的模块,这也会是一个很大的问题。

app.py 非常独立,可以放在任何地方。我将不胜感激任何以良好/优雅的方式解决这个问题的建议。

TL;DR :我有一个脚本尝试导入另一个目录中的另一个脚本,但它也导入具有相对路径的其他脚本。我尝试导入的脚本已导入,但无法导入通常导入的其他脚本。

最佳答案

一种变体是指定 app.py 所在的目录位于PYTHONPATH .

假设您有以下文件:

yourscript.py -> 可以位于系统上的任何位置,

import app
app.dosomething()

somepackage/app.py

import somemod
from subpack import innermod

def dosomething():
somemod.x()
othermod.y()

somepackage/somemod.py

def x():
print("XXX")

somepackage/subpack/innermod.py

def y():
print("YYYY")

现在,如果您调用yourscript像:

PYTHONPATH=<path_to_your_somepackage> python yourscript.py

它将解决脚本中相对于 PYTHONPATH 的依赖关系这是 somepackage 所在的路径驻留。

关于Python:如何从另一个文件夹导入脚本,该文件夹也在本地导入具有相对路径/本地文本文件的其他脚本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55521594/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com