为什么 matplotlib 不能在带有 web2py 的 digitalocean VPS 上工作?
Why does matplotlib not work on a digitalocean VPS with web2py?
我有一个 digitalocean droplet,我使用它部署了 web2py script。我按如下方式安装了matplotlib:
ssh root@ipdroplet
apt-get install python-matplotlib
我确实可以导入 matplotlib
如果我在 ssh 之后在命令行上简单地 运行 python
。问题是当我 运行 我的应用程序出现以下错误时:
<type 'exceptions.ImportError'> Cannot import module applications.app.modules.matplotlib
我猜这与用户 www-data
和 root
有关,但不知道如何解决。非常感谢任何帮助。不幸的是,this link 中提到的提示对我没有帮助。
谢谢
编辑
我还应该提一下,我没有使用 web2py 的二进制版本。我还通过 sudo -u www-data python
成功地将 运行 python 作为 www-data
,我可以在那里导入 matplotlib 就好了。
EDIT2
当我 运行 在本地使用 web2py 2.11.2-stable 时,它运行良好。在我的服务器上,虽然我在 2.12.3-stable 下。我猜这可能是原因。
所以我想出了一个解决办法。
因为它想在 web2py 应用程序的模块文件夹中找到 matplotlib 模块,所以我从那里创建了一个符号 link 到实际安装。然后我还需要更改后端,因为 trick 没用。
ln -s modules/matplotlib path_to_matplotlib
我得到 path_to_matplotlib
的方法是:
~#: python
>>> import matplotlib
>>> matplotlib
<module 'matplotlib' from '/usr/lib/pymodules/python2.7/matplotlib>/__init__.pyc
>>> print matplotlib.matplotlib_fname() # This will give the path to the backend settings
/etc/matplotlibrc
所以 link 命令看起来像:
ln -s /home/www-data/web2py/applications/app/modules/matplotlib /usr/lib/pymodules/python2.7/matplotlib
我还需要更改后端,你得到如上所示的路径(matplotlib_fname()
)。找到显示后端的行,并确保将其设置为 Agg
.
backend: Agg
通常设置为TkAgg
。
我有一个 digitalocean droplet,我使用它部署了 web2py script。我按如下方式安装了matplotlib:
ssh root@ipdroplet
apt-get install python-matplotlib
我确实可以导入 matplotlib
如果我在 ssh 之后在命令行上简单地 运行 python
。问题是当我 运行 我的应用程序出现以下错误时:
<type 'exceptions.ImportError'> Cannot import module applications.app.modules.matplotlib
我猜这与用户 www-data
和 root
有关,但不知道如何解决。非常感谢任何帮助。不幸的是,this link 中提到的提示对我没有帮助。
谢谢
编辑
我还应该提一下,我没有使用 web2py 的二进制版本。我还通过 sudo -u www-data python
成功地将 运行 python 作为 www-data
,我可以在那里导入 matplotlib 就好了。
EDIT2
当我 运行 在本地使用 web2py 2.11.2-stable 时,它运行良好。在我的服务器上,虽然我在 2.12.3-stable 下。我猜这可能是原因。
所以我想出了一个解决办法。
因为它想在 web2py 应用程序的模块文件夹中找到 matplotlib 模块,所以我从那里创建了一个符号 link 到实际安装。然后我还需要更改后端,因为 trick 没用。
ln -s modules/matplotlib path_to_matplotlib
我得到 path_to_matplotlib
的方法是:
~#: python
>>> import matplotlib
>>> matplotlib
<module 'matplotlib' from '/usr/lib/pymodules/python2.7/matplotlib>/__init__.pyc
>>> print matplotlib.matplotlib_fname() # This will give the path to the backend settings
/etc/matplotlibrc
所以 link 命令看起来像:
ln -s /home/www-data/web2py/applications/app/modules/matplotlib /usr/lib/pymodules/python2.7/matplotlib
我还需要更改后端,你得到如上所示的路径(matplotlib_fname()
)。找到显示后端的行,并确保将其设置为 Agg
.
backend: Agg
通常设置为TkAgg
。