这是我正在为我的应用程序使用的文件结构。我的问题是我无法获取我的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服务器上运行,不确定这是否有所作为......
谢谢!
答案 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