如何在Python IDLE中从其他位置导入模块?
我已经尝试了超过两天来解决这个问题,查阅了很多资料和教程,但还是没有找到解决办法。我真的是个新手,还不太明白自己在做什么。
我使用的软件有: 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 个回答
PYTHONPATH 是一个 环境变量(你可以在 这里 和 这里 查看相关信息)。我没有 Mac,但根据我提供的链接,你可以在命令行中输入类似下面的内容
launchctl setenv PYTHONPATH=/Me/Documents/mydir:$PYTHONPATH
这样你就可以从 /Me/Documents/mydir
运行 Python 脚本了。或者,你可以把这行代码放到你家目录下的一个叫 .bashrc
的文件里(~
表示你的家目录),这样每次打开终端时,这个路径都会自动设置好。想了解 .bashrc
和其他 .bash*
文件的简单介绍,可以查看 这里。希望这对你有帮助。
编辑 另外,你也可以看看 这个 问题。
我不太明白你说的 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
。