繁体   English   中英

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

[英]Python: How can i import a script from another folder that also locally imports other scripts with relative paths/local text files?

我得到了一个可以自行运行的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.pyPYTHONPATH驻留的目录。

假设您具有以下文件:

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的依赖关系, PYTHONPATHsomepackage所在的路径。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM