![](/img/trans.png)
[英]How can I execute a file (that imports other modules) from a Python script in a different directory without using relative imports in the file?
[英]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.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
的依賴關系, PYTHONPATH
是somepackage
所在的路徑。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.