python - 在 linux 中安装 matplotlib 的问题

标签 python linux numpy matplotlib

我已经成功安装了 numpy,现在我正在尝试安装 matplotlib。我正在按照以下网站上的步骤操作:

http://matplotlib.org/faq/installing_faq.html#source-install-from-git

错误发生在以下命令之后:

python setup.py install

这里是错误:

Checking .pth file support in /usr/local/lib/python2.7/dist-packages/
error: can't create or remove files in install directory                                     '

The following error occurred while trying to add or remove files in the installation directory:

    [Errno 13] Permission denied: '/usr/local/lib/python2.7/dist-packages/test-easy-install-24752.pth'

The installation directory you specified (via --install-dir, --prefix, or the distutils default setting) was:

    /usr/local/lib/python2.7/dist-packages/

我在我的机器上担任管理员并且(我认为)拥有所有读/写文件的权限:

administrator@ubuntu:/usr/local/lib/python2.7/dist-packages$ ll -a
total 8
drwxrwsr-x 2 root staff 4096 Aug 20  2013 ./
drwxrwsr-x 4 root staff 4096 Mar  9 11:04 ../

问题是什么,我该如何解决?

最佳答案

I am working as the administrator on my machine and (I think) have all the rights to read/write files

这确实是一个更适合 SuperUser 的讨论,但问题是作为“管理员”并不真正意味着你认为的那样。在这一行中:

drwxrwsr-x 2 root staff 4096 Aug 20  2013 ./

root是目录的所有者,最后的r-x表示其他用户只允许读和执行,不能写这个目录(见here更多详情)。

你能做什么?

  1. root 身份运行安装命令,例如$ sudo python setup.py 安装。这是不推荐的!以这种方式安装系统范围的 Python 模块的问题是其他包管理器(例如 apt-get)完全没有注意到在这样,往往会导致对其他系统包的依赖关系出现困惑。

  2. 从 Ubuntu 存储库安装软件包,即 $ sudo apt-get install python-matplotlib。这可能是安装 matplotlib 的最简单方法,并且不太可能破坏任何依赖关系。但是,Ubuntu 存储库往往包含大多数 Python 包的较旧版本。

  3. 将其安装到 virtualenv 中。这是安全的,因为它不会影响全局 site-packages 中的任何内容,并且它允许您安装最新的前沿版本。然而,将 matplotlib 安装到 virtualenv 中可能会很棘手,因为 matplotlib 有很多通常需要在系统范围内安装的后端依赖项。要解决此问题,您可以:

    a) 使用 --system-site-packages 标志创建您的 virtualenv。使用此选项,如果 Python 尝试导入 一个未本地安装在 virutalenvsite-packages 目录中的模块,它将然后查看系统范围的 site-packages。这意味着您可以在 virtualenv 中本地安装 matplotlib,它会在系统范围的 site-packages 中找到它的所有后端依赖项。不利的一面是,如果您在本地和系统范围内安装了相同的模块,则必须更加小心实际导入的版本。

    b) 使用 --no-site-packages 标志创建您的 virtualenv,然后在您的系统范围 站点中创建指向所需模块的符号链接(symbolic link)-packages 目录。 This blog article 提供了一组很好的说明,用于使用符号链接(symbolic link)在 virtualenv 中安装 matplotlib。这种方法比较棘手,但优点是您的 virtualenv(几乎!)完全独立,并且毫无疑问您的模块 import 是从哪里来的来自。

关于python - 在 linux 中安装 matplotlib 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23629898/

相关文章:

python - 如何提取字符串中与关键字列表中的某个单词匹配的单词

python - 当我运行该程序时,我不断收到此错误。我已经尝试了我能想到的一切,但仍然不起作用

linux - 使用多行输入从 shell 脚本运行 linux 程序

php - 无法使用 Yii::log 在 linux 中写入日志?

python - Numpy Correlate 不提供偏移量

python - Pytest 和舍入在命名元组中 float

python - 在 python 中使用 git 子模块

linux - 使用变量写入文件而不重复

python - numpy argmax 和 sort 函数的时间比较

python - Numpy fill_diagonal 返回 None