Pro*_*mer 3 numpy path python-import python-3.x
我是 Linux 系统的新手,没有操作系统的背景。
我在导入 numpy 时遇到了一些问题,但我解决了。
但是心里还是有些疑问。
我知道我可以使用以下代码来知道 Python 在哪里找到包
import sys
sys.path()
Run Code Online (Sandbox Code Playgroud)
在我的情况下,它提供了几种选择:
/home/twotwo/.local/lib/python3.6/site-packages
/usr/local/lib/python3.6/dist-packages
/usr/lib/python3/dist-packages
Run Code Online (Sandbox Code Playgroud)
我想知道第一和第二之间的区别
一个,还有第二个和第三个。
我想第一个和第二个差异是由我下载它的方式引起的,如下面所述,如果不是,请纠正我。
我们建议使用用户安装,使用 --user 标志来 pip (注意:不要使用 sudo pip,这可能会导致问题)。这将为您的本地用户安装软件包,并且不会写入系统目录。
第二个和第三个都/user在一开始
但是它们之间仍然存在一个有local和另一个没有的区别。
总结我的问题:
(1)两者的区别:
/home/twotwo/.local/lib/python3.6/site-packages
Run Code Online (Sandbox Code Playgroud)
/usr/local/lib/python3.6/dist-packages
(2)两者的区别:
/usr/local/lib/python3.6/dist-packages
/usr/lib/python3/dist-packages
Run Code Online (Sandbox Code Playgroud)
(3) 实际上,两条路径都有numpy,但是python如何选择要导入的路径?
非常感谢大家,祝你有美好的一天!
小智 9
您的问题主要是关于 Linux 文件系统布局。您可以阅读很多相关内容,例如在 Wikipedia 上,以及更具体地针对此 askubuntu question 中的不同lib位置。
我将尝试通过总结三个给定文件夹的常规使用方式来回答(1)和(2):
/usr/lib/python3/dist-packages包含系统使用包管理器安装的非主机特定模块,例如在 ubuntu 上使用sudo apt-get python-numpy.
/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 变量中,甚至可能无法被其他用户读取。
关于问题 (3):有关此问题的详细信息可以在 Python 3 docs 中阅读。基本上,在运行 python 脚本的文件夹中查找模块后,sys.path变量中的文件夹将按照它们在那里列出的顺序进行查找。一旦找到匹配名称的模块,它就会被导入。
注意:您的问题与 numpy 无关,因此应删除该标签。
| 归档时间: |
|
| 查看次数: |
5158 次 |
| 最近记录: |