如何在Python IDLE中从其他位置导入模块?

4 投票
2 回答
10920 浏览
提问于 2025-04-17 07:59

我已经尝试了超过两天来解决这个问题,查阅了很多资料和教程,但还是没有找到解决办法。我真的是个新手,还不太明白自己在做什么。

我使用的软件有: Mac OS X 10.6 Python v3.2.2 交互式解释器(IDLE)

问题是: IDLE的默认目录是 /Users/ME/Documents/。只有在这个目录下的 .py 文件才能被打开。不过,我创建了一个文件夹,想把所有与这个软件相关的 .py 文件保存在那里。目前,IDLE无法从我选择的目录加载 .py 文件。

我首先在 IDLE 中添加了: import sys。 sys.path.append('Users/Mydir/') sys.path

但是,我在2010年的一个已有讨论中看到,sys.path 只是给解释器用的,如果我想更改这个,需要修改 PYTHONPATH 环境变量:

PYTHONPATH="/Me/Documents/mydir:$PYTHONPATH" export PYTHONPATH

不过,我对如何使用这个感到困惑,找不到以下问题的答案: 1) PYTHONPATH (.py?) 在我安装程序时已经存在于我的电脑上吗? 如果是,那它在哪里?我找不到。 如果不是,我需要创建一个。但在哪里创建,内容应该是什么,才能让 IDLE 从非默认目录加载文件?里面只需要包含加粗的那些词吗?

希望我把我的问题说清楚了。

谢谢

2 个回答

0

PYTHONPATH 是一个 环境变量(你可以在 这里这里 查看相关信息)。我没有 Mac,但根据我提供的链接,你可以在命令行中输入类似下面的内容

launchctl setenv PYTHONPATH=/Me/Documents/mydir:$PYTHONPATH

这样你就可以从 /Me/Documents/mydir 运行 Python 脚本了。或者,你可以把这行代码放到你家目录下的一个叫 .bashrc 的文件里(~ 表示你的家目录),这样每次打开终端时,这个路径都会自动设置好。想了解 .bashrc 和其他 .bash* 文件的简单介绍,可以查看 这里。希望这对你有帮助。

编辑 另外,你也可以看看 这个 问题。

7

我不太明白你说的 load 是什么意思。它可能指的是在 IDLE 编辑器中打开和关闭文件,也可能是指用 Python 的 import 语句从其他文件加载现有的 Python 模块。我假设你说的 load 是指 import

在 Mac OS X 上,有两种常见的方法来启动 IDLE。第一种是通过终端的命令行,如果你是通过 python.org 的安装程序安装的 Python 3.2,默认情况下输入 /usr/local/bin/idle3.2 就可以了。第二种方法是从 /Applications/Python 3.2 启动 IDLE.app,也就是双击它的图标。因为你说默认的文件目录是你的 Documents 文件夹,我猜你是用第二种方法,因为 IDLE.app 会把 Documents 设为当前工作目录,这样在打开和保存文件时就会默认使用这个目录,并且这个目录会自动添加到 Python 的 sys.path 中,sys.path 是 Python 用来查找模块的目录列表。

如果你想把其他目录添加到 sys.path,正如你提到的,可以使用 PYTHONPATH 环境变量来实现。通常的做法是在一个 shell 启动脚本中添加 export PYTHONPATH=... 的定义,比如 .bash_profile。不过,如果你使用 IDLE.app,就没有 shell 参与,所以 .bash_profile 中的命令不会生效。

虽然有方法可以修改 OS X GUI 应用的环境变量,但在这种情况下,更简单的解决方案是通过命令行启动 IDLE,使用 /usr/local/bin/idle3.2,或者如果你在 /Applications/Python 3.2 文件夹中运行了 Update Shell Profile 命令(并打开了一个新的终端会话),只需输入 idle3。这样,你设置的 PYTHONPATH 环境变量就会被这个 IDLE 继承。

顺便说一下,除了修改 IDLE 的代码之外,没有直接的方法可以从 Documents 修改 IDLE.app 的初始当前工作目录。如果你从命令行启动 IDLE,它会继承 shell 的当前工作目录。

[更新] 不过,与其费劲去定义 PYTHONPATH,这里有一个更简单、更好的方法,应该可以在 IDLE.app 或命令行 idle 中都能用。这个方法利用了 Python 路径配置 (.pth) 文件用户 site-package 目录。假设你在 Mac OS X 上使用的是标准的 Python 3.2 框架构建(比如通过 python.org 安装的),你可以为想要永久添加到 sys.path 的目录创建一个路径文件。在终端会话中:

mkdir -p ~/Library/Python/3.2/lib/python/site-packages
cd ~/Library/Python/3.2/lib/python/site-packages
cat >my_paths.pth <<EOF
/Users/YOUR_USER_NAME/path/to/your_additional_python_directory_1
/Users/YOUR_USER_NAME/path/to/your_additional_python_directory_2
EOF

现在,每当你在你的用户名下运行 Python 3.2 或 IDLE 时,你添加到 .pth 文件中的目录会自动被添加到 sys.path 中。

顺便提一下,对于 3.2 或 2.7 之前的 Python 版本,用户 site-packages 目录的确切路径可能会稍有不同。此外,在其他类 Unix 系统上,用户 site-package 目录的默认位置是 ~/.local/lib/python3.2/site-packages

撰写回答