为什么我的Python不将当前工作目录添加到路径中?

51 投票
4 回答
25486 浏览
提问于 2025-04-16 19:56

我一直看到一些网站提到,当你在某个目录下执行 'python ' 时,这个目录会被添加到 Python 的路径中。例如,在这个链接中,作者先进入了 /tmp 文件夹,然后执行 'print(sys.path)',结果发现 /tmp 文件夹出现在路径列表里。下面是我在自己系统上尝试的情况(安装的是 2.6.6 版本):

示例结构:

app/
  mymodule.py
  inner_folder/
    myscript.py

在 myscript.py 中包含这一行:

import mymodule.py

我做了以下操作:

cd app
python inner_folder/myscript.py # ImportError

因为我是在 app/ 目录下执行解释器的,难道 'app' 不应该被添加到 Python 的路径中吗?我看到很多文档都是这样说明的。

请帮我解惑!

(我暂时通过手动将我想要的文件夹添加到环境中解决了这个问题,但我不想永远依赖这个方法。因为很多网站说这是可以做到的,我想自己也试试。)

4 个回答

0

检查一下模块的文件夹是不是空的。这听起来可能有点傻,但在我的情况下,我没有意识到它是一个git子模块,而且我没有进行递归克隆。

4

不管当前的目录是否在 sys.path 里面,导入模块的语句通常是这样的:

import mymodule

你写的代码看起来像这样:

import 'mymodule.py'
81

这里添加的是脚本所在的目录,而不是当前的目录。如果你把inner_folder/变成一个包,那么你可以使用python -m inner_folder.myscript来运行这个脚本,同时app/会被添加到sys.path中。

撰写回答