簡體   English   中英

python為什么看不到我的模塊?

[英]why can't python see my module?

我有一個像這樣的文件結構:

/package/main.py
/package/__init__.py
/package/config_files/config.py
/package/config_files/__init__.py

我正在嘗試根據命令行參數從main.py動態導入config.py ,如下所示:

#!/usr/bin/env python
from importlib import import_module

cmd_arguments = sys.argv
config_str = cmd_arguments[1]    
config = import_module(config_str, 'config_files')

但它抱怨由於ModuleNotFoundError: No module named 'default_config'中斷ModuleNotFoundError: No module named 'default_config' /package調用時,ipython中的類似代碼不會遇到相同的問題

如果有更好的方法可以在運行時通過用戶輸入來加載程序包,我歡迎您提出建議。

您正在嘗試從嵌套軟件包中導入,因此請使用完整的軟件包名稱:

config = import_module(config_str, 'package.config_files')

或者,使用相對導入,然后將第二個參數設置為package

config = import_module('.config_files.{}'.format(config_str), 'package')

這更加安全,因為現在config_str字符串不能用於“突破” config_files子軟件包。

您確實想從用戶提供的名稱中刪除點(最好將名稱限制為僅有效的Python標識符)。

暫無
暫無

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

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