在Mac上导入Python文件
我有一个Python课程的练习需要完成。我把我的方法和定义都保存在一个文件里,现在只需要弄明白怎么运行它。我希望你能告诉我怎么导入文件(我知道语法是“import 文件名”)。每次我这样做的时候都会出错。我该怎么把导入的文件路径改成我桌面上的文件呢?我在用Mac,运行的是IDLE 2.7.3。
2 个回答
在Mac OS X上,有两种基本的方法来启动IDLE。第一种是从Finder的应用程序文件夹中双击IDLE图标(我称之为 IDLE.app
)。第二种是通过终端命令行启动IDLE,像这样:
idle2.7
我称这个为 bin/idle
,因为它指的是你系统中某个 bin
目录下的文件。
当你启动 bin/idle
时,IDLE会继承当前终端的工作目录,并把这个目录放在Python查找导入模块的目录列表的最前面。你可以在IDLE的命令行窗口查看这个目录列表:
import sys
sys.path
但是,当你启动 IDLE.app
时,它并没有和任何终端关联,所以你无法告诉IDLE使用哪个工作目录。在这种情况下,IDLE.app
会使用你的 Documents
文件夹作为它的工作目录:用终端的表示法就是 ~/Documents
,也可以写成 /Users/你的登录名/Documents
。
你可以在Python程序中手动修改 sys.path
来添加其他目录以便导入模块:
import sys
sys.path.insert(0, '/path/to/directory')
另一种修改 sys.path
的方法是使用 PYTHONPATH
环境变量。但是,再说一次,当使用 IDLE.app
时,没有(简单的)方法可以将环境变量传递给它,这和 bin/idle
不同。
所以如果你想使用 IDLE.app
,最简单的方法就是把你想导入的所有文件和包目录放到你的 Documents
目录里。否则,使用终端会话,设置你想要的工作目录和/或 PYTHONPATH
变量,然后启动 bin/idle
。像这样:
cd ~/MyProject
export PYTHONPATH=~/"AnotherPackageDirectory"
idle2.7
还有一种方法是将你的模块安装在Python默认查找的位置,并使用Distutils、easy_install
或 pip
。不过这部分可以等你完成项目后再学习。
如果这些文件和你正在使用的文件在同一个文件夹里,你可以直接使用
import <filename> #(without the <>)
但是,如果你要引用的是在另一个文件夹里的文件,就要用到 imp
import imp
module = imp.load_source('module.name', '/path/to/file.py')
module.SomeClass()