2011-07-04 49 views
0

我正在使用Python 2.7。我对Python语言颇为陌生。我有两个python模块 - “Trailcrest.py”和“Glyph.py”,都在同一个文件夹中,但不在Python27文件夹中。如何从当前非默认目录导入模块

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

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

我该怎么做?

+0

所以后来你是如何导入Glyph.py? –

+0

我正在shell中运行Glyph.py,而不是导入它。我需要导入“Trailcrest.py”INTO Glyph.py。 – CodeMouse92

+0

然后该目录应该已经在'sys.path'中。等等...不要告诉我,你正在尝试导入'Trailcrest.py'而不是'Trailcrest' ... –

回答

3

如果你有在同一文件夹Trailcrest.pyGlyph.py,导入到彼此是那样简单:

import Trailcrest 
import Glyph 

如果这不起作用,似乎有什么不对您的Python安装。您可能想要查看sys.path中的内容。

import sys 
print sys.path 
+0

啊哈!路径是正确的,由Trailcrest保存为TrailcrestCore。 Der>。< – CodeMouse92

2

为了详细说明费迪南德拜尔的answer了一下,sys.path是文件位置,默认模块进口商检查的列表。一些(尽管不是所有的python安装)都会将当前目录或__main__模块的目录添加到路径中。为了确保相对于给定模块的路径在该模块中导入的是,做这样的事情:

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

但是这样的事情不应该永远把它做成“生产”的产品。相反,使用类似distutils的东西来安装模块的包到python site-packages目录中。

1

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

export PYTHONPATH=. 
python python_prog.py 
相关问题