有没有办法以编程方式替换PYTHONPATH? 我应该补充一点,我想用decode-submit
运行decode.py我在某个路径上有以下目录结构:
decode.py
decode2.py
crfsuite/
crfsuite.py
_crfsuite.so
libcqdb-0.12.so
libcrfsuite-0.12.so
decode.py:
import crfsuite
if __name__ == '__main__':
tagger = crfsuite.Tagger()
以下命令有效:
PYTHONPATH=./crfsuite LD_LIBRARY_PATH=./crfsuite python decode.py
或者,如果我将crfsuite / crfsuite.py和crfsuite / _crfsuite.so复制到我的本地目录(其中存在decode.py),那么以下内容也有效:
LD_LIBRARY_PATH=./crfsuite python decode.py
有没有办法以编程方式添加.py和.so文件?我想出了decode2.py:
from ctypes import *
import imp
if __name__ == '__main__':
cdll.LoadLibrary('<some-path>/crfsuite/_crfsuite.so')
imp.load_source('crfsuite', '<some-path>/crfsuite/crfsuite.py')
tagger = crfsuite.Tagger()
执行:
LD_LIBRARY_PATH=./crfsuite python decode2.py
Traceback (most recent call last):
File "decode2.py", line 6, in <module>
imp.load_source('crfsuite', '<some-path>/crfsuite/crfsuite.py')
File "<some-path>/crfsuite/crfsuite.py", line 17, in <module>
_crfsuite = swig_import_helper()
File "<some-path>/crfsuite/crfsuite.py", line 16, in swig_import_helper
return importlib.import_module('_crfsuite')
File "sw/anaconda2/lib/python2.7/importli/__init__.py", line 37, in import_module
__import__(name)
ImportError: No module named _crfsuite
答案 0 :(得分:1)
PYTHONPATH
env。变量内容被复制到sys.path
模块中,因此在导入之前可以添加一些这样的路径,例如:
import sys
sys.path.append("/path/to/your/module")
# your_module.py will now be found in /path/to/your/module
import your_module
请注意,如果sys.path.remove
覆盖某些系统库并且您不想要它,则还可以使用PYTHONPATH
删除路径。