簡體   English   中英

腳本的絕對和相對導入

[英]Absolute and relative importing for scripts

我知道這個問題經常被問到,但是關於導入我有一個非常具體的問題。 我的文件結構如下:

main/main.py
main/test_device.py
main/lib/instructions.py
main/device/android.py
main/temp/example.py

基本上,這里發生的是我的程序( main.py )創建了幾個較小的腳本(在temp/ ),然后嘗試運行它們。 但是,每個腳本都引用lib/instructions.pydevice/android.py 此代碼運行以下文件:

name = "temp/test_" + str(program_name) + ".py"
input_file = open("test_device.py", "r")
contents = input_file.readlines()
input_file.close()
contents.insert(7, "program = [" + ", ".join(str(i) for i in instructions) + "]\r\n")
contents.insert(8, "count = " + str(program_name) + "\r\n")
contents = "".join(contents)
input_file = open(name, "w+")
input_file.write(contents)
Popen("python " + name)

我在每個目錄中都有__init__.py文件,但是由於這些文件是腳本,因此無法使用相對導入。 我將如何導入這些庫?

將模塊復制到python / lib / site-packages將解決此問題。

如果我了解您,則需要在內容中構建的腳本,以便能夠從包中導入其他模塊,但是它不能要求正確的目標目錄b / c相對笨拙的相對導入超越自身。 嘗試在加入列表之前添加此行

contents.insert(0, "import sys; sys.path.append('lib'); sys.path.append('device')")

在這里已經很晚了,我在打手機,所以可能有錯字,但是我希望這對您有用。

編輯:根據當前工作目錄,您可能需要附加'../lib'或使用絕對路徑

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM