如何解决Python 导入模块在目录和目录级别中带有空格
我正在'重新发布'这个问题的更多细节,因为我觉得第一次被误解了。我有一个看起来像这样的文件夹结构:
folder w space
├── folder1
│ └── subfolder1
│ └── file_1.py
└── folder2
└── folder w space2
└── file_2.py
└── __init__.py
我需要让 file_1.py
从 file_2.py
导入方法。请注意,file_2.py
与 file_1.py
相关,是向上 3 个目录,然后向下 3 个目录。理论上,我会这样写相对导入:
from ...folder2 import folder w space2.file2
然而,由于子文件夹中的间距,这是无效的。绝对导入更糟糕,因为基本文件夹也包含空格:
from folder w space.folder2.folder w space2.file2
有了这个,我如何在没有:
的情况下访问file_2.py
的内容
任何帮助将不胜感激!
解决方法
# bar.py
import importlib
importlib.import_module("folder with spaces.foo")
# folder with spaces/foo.py
print('Hello World')
,
内置的 __import__()
允许在导入语句中支持空格:
sample_with_spaces = __import__("sample with spaces.foo")
sample_with_spaces.foo.hello()
在这个问题中找到它: https://stackoverflow.com/a/9123555/6180150
filename 用作导入模块的标识符(即 foo.py 将作为 foo 导入)并且 Python 标识符不能有空格,import 语句不支持这一点
因此,不是让 import 语句设置标识符,而是通过将 __import__("sample with spaces.foo")
分配给您自己选择的标识符来手动完成。在我的示例中,它是标识符 sample_with_spaces
。
编辑:
我认为在您的情况下,在子文件夹中执行脚本时,这是更新工作目录的最简单方法,如下所示。
import os
os.chdir("..") # move up as much as needed
sample_with_spaces = __import__("sample with spaces.foo")
sample_with_spaces.foo.hello()
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。