簡體   English   中英

在python3中的運行時從動態路徑導入固定模塊

[英]Importing a fixed module from a dynamic path at runtime in python3

我四處搜尋,但未找到解決此特定Python3問題的解決方案。 也許是我正在使用的關鍵字,或者可能只是一個特殊的用例。 如果我的問題是后者,這是我的問題:

我正在開發一個python(3)腳本,該腳本需要使用已在用戶主目錄中本地編譯的python模塊。 作為配置腳本,我沒有什么花哨的東西可以將用戶的路徑配置為自動化過程。 我想在運行時將python模塊的路徑作為命令行參數傳遞給腳本,然后動態加載該模塊。 例如,我將呼叫:

$ myscript.py --modpath /home/user/path/to/ModuleSource

然后在我分析命令行參數時,在我的代碼中調用如下內容:

import sys
sys.path.append(localModulePath)
import GlobalModuleName

問題在於,在使用模塊方法的腳本的靜態代碼中,只有在運行時將模塊的定義傳遞給腳本時,才能解析實際的模塊。 也就是說,如果我有如下的python代碼

GlobalModuleName.moduleFunc()

我收到“ NameError:名稱'GlobalModuleName'未定義 ”的運行時錯誤。

如何使該配置正常工作而不產生錯誤? 我確定將使用模塊的動態定義的代碼是正確的。 感謝您提前的指示。

這對我來說很完美

module1.py import os導入系統

def func1():
    print("Executed func1 of module1")

main.py

import sys

pathPassed=sys.argv[1]
sys.path.append(pathPassed)
import module1
module1.func1()

執行

 python main.py ThePathformodule1.py

Executed func1 of module1

您唯一需要注意的是, import語句應該在sys.path.append

暫無
暫無

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

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