【发布时间】:2021-03-31 14:33:15
【问题描述】:
我的目录中有一个名为 mem.py 的文件,并且来自我导入的另一个脚本:
from mem import get_val
然后我决定将mem.py 移动到funcs 子目录中。为了使其对我导入的脚本可见,我已将其添加到其中:
import sys
sys.path.append('/home/myname/src/funcs/')
然而,python 不能再导入mem了!有趣的是,它仍然可以从位于funcs 的其他文件中导入其他内容。
我假设 python 以某种方式记住了当前目录中的 mem.py 并继续在那里搜索并没有找到它(因为它已移动到 funcs)。
我想去__pycache__子目录,发现mem.pyc在里面,还以为有问题。所以,我已经删除了它。但是,它没有帮助,我仍然无法导入表单mem.py。那么,我做错了什么?
添加
我想当我更改导入顺序后问题就解决了。我的解释如下:
- 在我的第一个(非工作示例)中,第一个导入来自
mem。 Python 记得 mem 在当前目录中,尝试在那里找到它,但没有成功并崩溃。 - 如果我更改导入顺序。 Python 看到一个新库并开始搜索它。它在 'funcs' 子目录中找到它并创建相应的 *.pyc 文件。这一步迫使 Python 在
funcs子目录中搜索其他内容(也是旧内容)。
【问题讨论】:
-
你可以使用
from funcs.mem import get_val -
这个系统路径附加应该可以工作。请展示问题的可重现示例。
-
导入的顺序很重要,你是在尝试导入后添加到sys路径吗?另见python packages
-
不,我在导入其他东西之前已经导入了 sys。
标签: python python-3.x import sys.path