从子文件夹而不是同一目录导入模块?
Posted
技术标签:
【中文标题】从子文件夹而不是同一目录导入模块?【英文标题】:Import module from child folder instead of same directory? 【发布时间】:2021-05-24 12:25:57 【问题描述】:所以我有以下文件结构(win10)
project/
mycode.py
lib/
bunch of python modules
paramiko/
all of paramiko's files
在这里,所有模块都在一个子文件夹中,当我说
import paramiko
在 mycode.py 中,找不到 paramiko。但是,当我将它们全部移出 lib 目录时,它工作正常。
工作解决方案:
project/
mycode.py
bunch of python modules
paramiko/
all of paramiko's files
但它很难看,我宁愿将它们全部放在一个 lib 目录中。如何访问子目录中的模块?
编辑:好的,想通了。我用过操作系统。添加到路径:
projectPath = os.path.dirname(os.path.abspath(__file__))
sys.path.append(projectPath+"\\lib")
我之前尝试过,除了这次,我在对路径进行编辑之后将导入 paramiko 移到了。天哪,我有时觉得自己很愚蠢
【问题讨论】:
【参考方案1】:您也可以不将其添加到路径中:
from lib import paramiko
或
import lib.paramiko
只要你有这样的目录结构
project/
mycode.py
lib/
bunch of python modules
paramiko/
all of paramiko's files
【讨论】:
第一个结果是:Traceback (most recent call last): File "E:\skylight\skylight.py", line 18, in <module> from lib import paramiko File "E:\skylight\lib\paramiko\__init__.py", line 21, in <module> from paramiko._version import __version__, __version_info__ ModuleNotFoundError: No module named 'paramiko'
,第二个结果是一样的。
如果您在mycode.py
中执行import lib.paramiko
,它应该可以工作,我的工作结构类似。以上是关于从子文件夹而不是同一目录导入模块?的主要内容,如果未能解决你的问题,请参考以下文章