如何从当前非默认目录导入模块

时间:2011-07-04 21:53:22

标签: python import module

我正在使用Python 2.7。我是蟒蛇语言的新手。我有两个python模块 - “Trailcrest.py”和“Glyph.py”,它们都在同一个文件夹中,但不在Python27文件夹中。

我需要将“Trailcrest.py”导入“Glyph.py”,但我收到的消息是“没有这样的模块存在”。

此外,我用于导入模块的任何方法都不需要依赖于固态路径。该程序是跨平台的,可以根据用户的喜好更改路径。但是,这两个模块将始终位于同一个文件夹中。

我该怎么做?

3 个答案:

答案 0 :(得分:3)

如果您在同一文件夹中有Trailcrest.pyGlyph.py,则将其中一个导入到另一个文件夹中就像这样简单:

import Trailcrest
import Glyph

如果这不起作用,那么您的Python设置似乎有问题。您可能想查看sys.path中的内容。

import sys
print sys.path

答案 1 :(得分:2)

要详细说明Ferdinand Beyer的answersys.path是默认模块导入器检查的文件位置列表。虽然不是所有的python安装都会将当前目录或__main__模块的目录添加到路径中。要确保相对于给定模块的路径可在该模块中导入,请执行以下操作:

import os.path, sys
sys.path.append(os.path.dirname(__file__))

但类似的东西不应该成为“生产”产品。相反,使用distutils之类的东西将模块的软件包安装到python site-packages目录中。

答案 2 :(得分:1)

这也可以使用环境变量PYTHONPATH来实现,这也会影响Python的搜索路径。这可以在shell脚本中完成,这样就不需要更改Python文件。如果要从当前工作目录导入它,请在bash中使用.表示法:

export PYTHONPATH=.
python python_prog.py