import失败的时候,常常要去看看模块所在的路径是否包含在了sys.path内。有很多方法可以查看sys.path。
常规方法
常规方法就是登陆python shell,导入sys,查看sys.path。
>>> from pprint import pprint
>>> import sys
>>> pprint(sys.path)
['',
'/usr/local/python3.8.6/lib/python38.zip',
'/usr/local/python3.8.6/lib/python3.8',
'/usr/local/python3.8.6/lib/python3.8/lib-dynload',
'/home/xinlin/.local/lib/python3.8/site-packages',
'/usr/local/python3.8.6/lib/python3.8/site-packages']
python3 -c,表示直接在命令行执行python语句。
$ python3 -c 'print("\n".join((__import__("sys").path)))'
/usr/local/python3.8.6/lib/python38.zip
/usr/local/python3.8.6/lib/python3.8
/usr/local/python3.8.6/lib/python3.8/lib-dynload
/home/xinlin/.local/lib/python3.8/site-packages
/usr/local/python3.8.6/lib/python3.8/site-packages
python3 -m,表示将模块执行,有很多模块是可以直接执行的,它们都含有可直接执行的代码,或用于测试,或提供某种功能。
$ python3 -m site
sys.path = [
'/home/xinlin/repos',
'/usr/local/python3.8.6/lib/python38.zip',
'/usr/local/python3.8.6/lib/python3.8',
'/usr/local/python3.8.6/lib/python3.8/lib-dynload',
'/home/xinlin/.local/lib/python3.8/site-packages',
'/usr/local/python3.8.6/lib/python3.8/site-packages',
]
USER_BASE: '/home/xinlin/.local' (exists)
USER_SITE: '/home/xinlin/.local/lib/python3.8/site-packages' (exists)
ENABLE_USER_SITE: True
python3 -m site,算不算python3的一个彩蛋呢!。。。(我知道的python第一个彩蛋是python的禅)
-- EOF --