从测试文件访问模块

时间:2013-06-01 23:29:14

标签: python path

这是我正在为我的应用程序使用的文件结构。我的问题是我无法获取我的test_ctd.py文件来查看我的ctd.py文件。

这是我的目录结构

FileParser
--Parsers
----ctd.py
--tests
----__init__.py
----test_ctd.py
--parse.py

我从未使用 init .py文件并且很难理解它,但这是我尝试将ctd.py添加到我的路径中。

import sys
import os.path
d = os.path.dirname(os.path.dirname(os.path.abspath('../../')))

from Parsers import ctd

此外,我的parse.py文件中没有任何代码,但我将使用它来启动程序。我是否还需要一个 init 文件,以便我可以从Parsers文件夹中导入文件?

有关如何从此程序结构中访问我的文件的任何帮助将不胜感激。最终它将在Web服务器上运行,不确定这是否有所作为......

谢谢!

3 个答案:

答案 0 :(得分:1)

如果您要从Parsers导入内容,则

FileParser__init__.py必须包含ctd.py。请参阅Importing modules in Python and __init__.py

然后,您可以通过执行相对导入(例如ctd.py)或将from ..Parsers import ctd添加到FileParser并使用sys.path来从测试脚本中导入from Parsers import ctd。< / p>

或者,将包含FileParser的目录添加到sys.path并使用from FileParser.Parsers import ctd

希望有所帮助。

答案 1 :(得分:1)

__init__.py文件移至Parsers并将目录FileParser添加为PYTHONPATH的绝对路径。例如sys.path.append('full/path/to/FileParser')

答案 2 :(得分:1)

您需要确保Python实际上正在寻找合适的位置。您可以通过修改PYTHONPATH环境变量来包含找到Python包的位置(例如此目录)来执行此操作。您还需要一个__init__.py文件,将目录标记为Python包。

或者,廉价,黑客的方式是修改sys.path

import sys
import os
sys.path.insert(0, os.path.join(os.path.abspath(os.path.dirname(__file__)), 'Parsers'))
import cdt