导致不同位置Python包的原因 [英] The reason cause different location of python packages

查看:17
本文介绍了导致不同位置Python包的原因的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我是Linux系统的新手,没有操作系统背景。

我在导入NumPy时遇到一些问题,但我已经解决了。

但我心里还有一些问题。

我知道我可以使用以下代码来了解Python在哪里找到包

import sys
sys.path()

在我的情况下,它提供了几个选项:

/home/twotwo/.local/lib/python3.6/site-packages
/usr/local/lib/python3.6/dist-packages
/usr/lib/python3/dist-packages

我想知道它们之间的区别。

我猜第一次和第二次之间的差异是由我下载它的方式造成的,如下所述,如果不是,请纠正我。

我们建议使用用户安装,使用--user标志来执行pip(注意:不要使用sudo pip,这可能会导致问题)。这将为您的本地用户安装包,并且不会写入系统目录。

以及第二个和第三个都以/usr开头。

但还是有区别的,一个有local,另一个没有。

总结我的问题:

(1):

/home/twotwo/.local/lib/python3.6/site-packages 

/usr/local/lib/python3.6/dist-packages

(2):

/usr/local/lib/python3.6/dist-packages

/usr/lib/python3/dist-packages

(3)实际上,这些路径中有两个路径为NumPy,但Python如何选择要导入哪一个路径?

非常感谢大家,祝您有愉快的一天!

linux

您的问题主要是关于推荐答案文件系统布局。您可以阅读很多有关这方面的内容,例如on Wikipedia以及this askubuntu question中不同lib位置的更具体内容。

我将尝试通过总结三个给定文件夹的常规用法来回答(1)和(2):

  • /usr/lib/python3/dist-packages包含系统使用包管理器安装的非特定于主机的模块,例如使用sudo apt-get python-numpy安装在Ubuntu上。

  • /usr/local/lib/python3.6/dist-packages包含您通过包管理器在系统范围内安装的模块,例如使用sudo pip install numpy。(当然,使用sudo pip可能会导致问题,正如您正确地提到的那样。)

  • /home/twotwo/.local/lib/python3.6/site-packages包含用户twotwo在其自己的用户目录中安装的模块,例如通过在用户模式下使用pip。这些模块只能由twotwo导入,因为它们不会出现在其他用户的PATH变量中,甚至可能无法被其他用户读取。

还请注意,命名dist-packages是特定于Debian(及其派生)的约定,用于使用Debian包安装的Python包,如here所述。在手动安装的python中,各个文件夹将命名为site-packages,这是pip的标准名称。

关于问题(3):有关这方面的详细信息,请参阅in the Python 3 docs。基本上,在运行您的Python脚本的文件夹中查找模块之后,sys.path变量中的文件夹将按照它们在中列出的相同顺序进行查找。一旦找到匹配名称的模块,就会将其导入。

注意:您的问题与NumPy无关,因此应删除该标记。

这篇关于导致不同位置Python包的原因的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆