1. 这么多年,python 的目录机制也一直没有深究过,但今天运行《End-to-End Differentiable Proving》里的代码时,报错“找不到 ntp 模块”,就在代码开头加了巴拉巴拉。
2. 而且那啥,原来在 cmd 下运行 python ntp/experiments/learn.py 和进入 ntp/experiments 这个目录下再运行 python learn.py 会在读文件方面产生差异。
====================================================
头部加入 5 行代码,查看路径是否在环境变量中。
import sys
print( sys.path )
import os
sys.path.append( os.getcwd() )
print( sys.path )
from ntp.kb import Atom, load_from_file, normalize
from ntp.nkb import kb2nkb, augment_with_templates, embed_symbol, rule2struct
from ntp.prover import prove, representation_match, is_tensor, is_parameter, neural_link_predict
from ntp.tp import rule2string
import tensorflow as tf
from pprint import pprint
运行代码 ntp-master > python ntp\experiments\learn.py(记得要在 ntp-master 目录下)
[ 'C:\\...\\ntp-master\\ntp-master\\ntp\\experiments', ... ]
[ 'C:\\...\\ntp-master\\ntp-master\\ntp\\experiments', ... , 'C:\\Users\\...\\ntp-master\\ntp-master' ]
如果在 ntp-master\ntp\experiments 目录下运行 python learn.py 依旧会报错,这是因为当前工作空间是 ntp-master\ntp\experiments。
[ 'C:\\...\\ntp-master\\ntp-master\\ntp\\experiments', ... ]
[ 'C:\\...\\ntp-master\\ntp-master\\ntp\\experiments', ... , 'C:\\...\\ntp-master\\ntp-master\\ntp\\experiments' ]