Python中如何从其他目录导入文件?含具体路径场景
导入指定路径Python模块的几种方法
针对你的主文件/storage/emulated/0/BOT/main.py导入/storage/emulated/0/BOT/Plugins/spam.py的需求,以下是可行方案:
方法一:相对导入(推荐)
这是最符合Python包结构规范的方式,前提是Plugins目录下存在一个空的__init__.py文件(用来标识该目录为Python包)。
在main.py中直接写入:
# 导入整个spam模块 from Plugins import spam # 或者导入模块中的特定函数/类(更节省资源) from Plugins.spam import 目标函数名/类名
方法二:手动添加路径到Python搜索列表
如果不想创建__init__.py,可以通过修改sys.path将Plugins目录加入Python的模块搜索路径:
import sys import os # 获取main.py所在的BOT目录绝对路径 bot_dir = os.path.dirname(os.path.abspath(__file__)) # 拼接Plugins目录的绝对路径 plugins_dir = os.path.join(bot_dir, "Plugins") # 将路径添加到搜索列表 sys.path.append(plugins_dir) # 现在可以直接导入spam模块 import spam
方法三:直接加载指定文件(不推荐)
通过importlib工具直接加载指定路径的.py文件,这种方式绕过了Python的包管理机制,仅在特殊场景下使用:
import importlib.machinery import os # 拼接spam.py的绝对路径 spam_file_path = os.path.join(os.path.dirname(os.path.abspath(__file__)), "Plugins", "spam.py") # 加载模块 spam = importlib.machinery.SourceFileLoader("spam", spam_file_path).load_module()
内容的提问来源于stack exchange,提问作者Naresh Mods YT
相关产品推荐
相关产品推荐

