簡體   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