一句话,给搜索路径,代码在调用路人甲,就把路人甲的父亲路径加入即可,可以采取的办法1是绝对路径:
pythonimport os
import sys
sys.path.append("/home/kevin_xie/yifeinfs/pycharm_k/python_test/")
办法2是相对路径+sys的一些方法:
pythonimport os
import sys
__dir__ = os.path.dirname(os.path.abspath(__file__))
sys.path.append(__dir__)
sys.path.append(os.path.abspath(os.path.join(__dir__, '../..'))) # to get "/home/kevin_xie/yifeinfs/pycharm_k/python_test/"
python提示找不到包怎么办?
比如我有如下的工程,里面有reco1包和reco2包,每个包里面还有sub包。在prfunction.py中有一个pr函数,我想在test1.py中去运行这个函数。
如果在pythcharm中,你可以这么写,没有问题,能找到包。
powershellfrom reco1.sub.prfunction import pr pr()
但你在终端执行,在/home/kevin_xie/yifeinfs/pycharm_k/python_test/reco2/sub2执行是执行不了的:
powershell(py37) [kevin_xie@localhost sub2]$ pwd /home/kevin_xie/yifeinfs/pycharm_k/python_test/reco2/sub2 (py37) [kevin_xie@localhost sub2]$ python test1.py Traceback (most recent call last): File "test1.py", line 2, in <module> from reco1.sub.prfunction import pr ModuleNotFoundError: No module named 'reco1'
或者你可以去/home/kevin_xie/yifeinfs/pycharm_k/python_test执行,也是不行的:
powershell(py37) [kevin_xie@localhost python_test]$ pwd /home/kevin_xie/yifeinfs/pycharm_k/python_test (py37) [kevin_xie@localhost python_test]$ python reco2/sub2/test1.py Traceback (most recent call last): File "reco2/sub2/test1.py", line 2, in <module> from reco1.sub.prfunction import pr ModuleNotFoundError: No module named 'reco1'
推出方法,如果这么写,将想调用的包的父亲路径加入,就能寻找到了。
powershellimport os import sys __dir__ = os.path.dirname(os.path.abspath(__file__)) sys.path.append(__dir__) sys.path.append(os.path.abspath(os.path.join(__dir__, '../..'))) # to get "/home/kevin_xie/yifeinfs/pycharm_k/python_test/" from reco1.sub.prfunction import pr pr()
本文作者:Dong
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC。本作品采用《知识共享署名-非商业性使用 4.0 国际许可协议》进行许可。您可以在非商业用途下自由转载和修改,但必须注明出处并提供原作者链接。 许可协议。转载请注明出处!