相干引荐:《python视频》
如今人人的电脑上很可能不只要一个Python,另有更多的虚拟环境,致使装置包的时刻,一不小心你就遗忘注重装置包的途径了。起首我们来处理找包的题目,这个题目回覆起来很简单,但很多人不知道这个道理。假如你的Python诠释器的途径是<path_prefix>/bin/python,那末你启动Python交互环境或许用这个诠释器运转剧本时,会默许寻觅以下位置:
<path_prefix>/lib(规范库途径)
<path_prefix>/lib/pythonX.Y/site-packages(三方库途径,X.Y是对应Python的主次版本号,如3.7, 2.6)
当前工作目次(pwd敕令的返回效果)
这里假如你用的是Linux上的默许Python,<path_prefix>就是/usr,假如你是本身运用默许选项编译的,<path_prefix>就是/usr/local。从上面第二条能够看到差别次版本号的Python的三方库途径差别,假如你把Python从3.6升级到3.7那末之前装的三方库都没法用了。固然你能够全部文件夹都拷贝过去,大部分状况不会出题目。
几个有效的函数
sys.executable 当前运用的Python诠释器途径
sys.path 当前包的搜刮途径列表
sys.prefix 当前运用的<path_prefix>
例:
>>> import sys >>> sys.executable'/home/frostming/.pyenv/versions/3.7.2/bin/python' >>> sys.path ['', '/home/frostming/.pyenv/versions/3.7.2/lib/python37.zip', '/home/frostming/.pyenv/versions/3.7.2/lib/python3.7', '/home/frostming/.pyenv/versions/3.7.2/lib/python3.7/lib-dynload', '/home/frostming/.local/lib/python3.7/site-packages', '/mnt/d/Workspace/pipenv', '/home/frostming/.pyenv/versions/3.7.2/lib/python3.7/site-packages'] >>> sys.prefix'/home/frostming/.pyenv/versions/3.7.2'
运用环境变量增加搜刮途径
假如你的包的途径不存在上面列出的搜刮途径列内外,能够把途径加到PYTHONPATH环境变量里,多个途径用:离隔(Windows用;)。
但需注重,防备把差别Python版本包的途径加到PYTHONPATH里,比方PYTHONPATH=/home/frostming/.local/lib/python2.7/site-packages,由于PYTHONPATH中的途径是优先于默许搜刮途径,假如用Python 3的话会有兼容性题目。
趁便说下PATH是用来找可实行顺序的搜刮途径,假如你在终端中运转敕令my_cmd,体系会顺次扫描PATH中的途径,看my_cmd是不是存在于该途径下,所以假如提醒找不到顺序或敕令没法辨认,那你就要看途径是不是加到PATH里了。
Python是怎样装置包的
如今用装置Python包基础是用的pip,就算你是用pipenv,poetry,底层依然是pip,一概实用。 假如你没有装置pip请参考这里,假如装置了还没法用pip敕令请参考上一节。
运转pip有两种体式格局:
pip ... python -m pip ...
第一种体式格局和第二种体式格局迥然差别,区别是第一种体式格局运用的Python诠释器是写在pip里的,平常状况下,假如你的pip途径是<path_prefix>/bin/pip,那末Python途径对应的就是<path_prefix>/bin/python。第二种体式格局则显式地指定了Python的位置。这条划定规矩,关于一切Python的可实行顺序都是实用的。流程如下图所示。
那末,不加任何自定义设置时,运用pip装置包就会自动装置到<path_prefix>/lib/pythonX.Y/site-packages下(<path_prefix>是从上一段里获得的),可实行顺序装置到<path_prefix>/bin下,假如需要在敕令行直接运用my_cmd运转,记得加到PATH。
pip中变动装置位置的选项
--prefix PATH,替代<path_prefix>为给定的值--root ROOT_PATH,在<path_prefix>前面加上ROOT_PATH,比方--root /home/frostming,<path_prefix>就会从/usr变成/home/frostming/usr--target TARGET,直接指定装置位置到TARGET
虚拟环境
虚拟环境就是为了断绝差别项目的依靠包,使他们装置到差别的途径下,以防备依靠争执的题目。理解了Python是怎样装置包的机制今后就不难理解虚拟环境(virtualenv, venv模块)的道理。实在,运转virtualenv myenv会复制一个新的Python诠释器到myenv/bin下,并创建好myenv/lib,myenv/lib/pythonX.Y/site-packages等目次(venv模块不是用的复制,但效果基础一样)。实行source myenv/bin/activate今后会把myenv/bin塞到PATH前面,让这个复制出来的Python诠释器最优先被搜刮到。如许,后续装置包时,<path_prefix>就会是myenv了,从而完成了装置途径的断绝。
总结
看到这里人人能够发明,关于包途径搜刮最主要的就是这个<path_prefix>途径前缀,而这个值又是从运用的Python诠释器途径推导出来的。所以要找到包的途径,只需要知道诠释器的途径就能够了,假如碰到转变包的途径,只需要经由过程准确的PATH设置,指定你想要的Python诠释器即可。
如今回到开首的三个题目,人人会处理了吗?在批评区写出你的排查步骤或处理方法。
本文示例均运用Unix途径习气,假如是Windows体系则应当作恰当修改,如<path_prefix>/bin应为<path_prefix>/Scripts↩
以上就是python装置的包怎样寻觅的细致内容,更多请关注ki4网别的相干文章!