尝试运行 pgAdmin4 时出错

Posted

技术标签:

【中文标题】尝试运行 pgAdmin4 时出错【英文标题】:Error trying to run pgAdmin4 【发布时间】:2017-05-06 17:07:08 【问题描述】:

我已经安装了 pgAdmin4 附带的 postgresql 9.6(使用建议的 linux 安装程序),但出现了一些错误。

首先,我必须将文件夹名称从“pgAdmin 4”(注意多余的空格)更改为“pgAdmin4”以避免“找不到文件错误”。

然后我运行sudo python pgAdmin4.py 并得到以下错误:

Traceback (most recent call last):
   File "../../pgAdmin4.py", line 24, in <module>
      from pgadmin import create_app
   File "/opt/PostgreSQL/9.6/pgAdmin4/web/pgadmin/__init__.py", line 17, in <module>
      from flask import Flask, abort, request, current_app
ImportError: No module named flask

我尝试关注这个相关问题: Flask ImportError: No Module Named Flask -- 设法在 virtualenv 上安装了烧瓶。

但后来我开始得到其他缺少的烧瓶相关模块:flask_babel、flask_login、flask_security。我使用 pip 安装了所有这些,但是我在缺少模块 htmlmin.minify 时出现错误,我似乎无法安装。

Traceback (most recent call last):
   File "../pgAdmin4.py", line 24, in <module>
      from pgadmin import create_app
   File "/opt/PostgreSQL/9.6/pgAdmin4/web/pgadmin/__init__.py", line 23, in <module>
      from htmlmin.minify import html_minify
ImportError: No module named htmlmin.minify

我还将 PYTHONPATH 导出到烧瓶上的那个,如 here 所述,仍然得到同样的错误。

那么,有人知道如何让 pgAdmin4 在 ubuntu 环境中工作吗?

【问题讨论】:

你安装了virtualenv吗?您是否尝试从 virtualenv 内部做所有事情? 我安装了 virtualenv,但可能是我实际上并没有在该虚拟 env 中运行?我如何确定? 您需要通过运行. venv/bin/activate 激活virtualenv,其中venv 是virtualenv venv 的结果。插入点,可以使用命令source 是的,我运行了环境,这导致终端显示以 env 名称(flask)开头的提示。仍然,得到一个错误。我怀疑 pip 安装没有在 virtualenv 上完成。当我运行 pip install flask 时出现权限错误,所以我使用 sudo 运行它,但我认为 sudo 会导致它安装在 virtualenv 之外。 【参考方案1】:

根据https://www.pgadmin.org/download/pip4.php.

通过运行安装virtualenv:

sudo apt-get install virtualenv

你还需要安装这两个库:

sudo apt-get install libpq-dev python-dev 

然后:

cd ~/bin/
virtualenv pgadmin4

我更喜欢使用~/bin/ 目录来安装应用程序。

然后根据您使用的 python 版本下载pgadmin4-1.1-py2-none-any.whlpgadmin4-1.1-py3-none-any.whl。对于这个例子,我们使用 python 2.7。

你下载pgadmin4:

wget https://ftp.postgresql.org/pub/pgadmin3/pgadmin4/v1.1/pip/pgadmin4-1.1-py2-none-any.whl

激活虚拟环境:

. ~/bin/pgadmin4/bin/activate

之后你会在终端看到(pgadmin4)

pgadmin4 内部运行:

pip install ./pgadmin4-1.1-py2-none-any.whl

之后你必须能够运行 pgadmin4:

python ~/bin/pgadmin4/lib/python2.7/site-packages/pgadmin4/pgAdmin4.py 

为了使运行过程更容易一些,您可以创建一个别名。例如,在 Ubuntu 16.04 LTS 中,在 ~/.bash_aliases 文件中添加别名:

alias pgadmin4='. /home/your_username/bin/pgadmin4/bin/activate; /home/your_username/bin/pgadmin4/lib/python2.7/site-packages/pgadmin4/pgAdmin4.py'

your_username 应替换为您的真实用户名。

然后给pgAdmin4.py文件中的764赋予执行权限:

/home/your_username/bin/pgadmin4/lib/python2.7/site-packages/pgadmin4/pgAdmin4.py

您还需要编辑pgAdmin4.py 文件并将这一行添加到最顶部:

#!/home/your_username/bin/pgadmin4/bin/python

your_username 是您的真实用户名。

这将确保您使用所需版本的 python 运行应用程序并包含所有必要的依赖项以运行pgadmin4

然后运行 ​​. ~/.bashrc 以应用更改。

所以现在您可以打开终端并只需输入pgadmin4 即可运行它。

打开浏览器并指向:

http://127.0.0.1:5050

还有一点需要注意 - 如果您需要在桌面模式下运行 pgadmin4,您需要将 SERVER_MODE 更改为 False:

/home/your_username/bin/pgadmin4/lib/python2.7/site-packages/pgadmin4/config.py

否则当你访问 localhost:5050 时它会询问你的登录名和密码。

UDPATE:

从 2021 年开始(甚至更早),一个更好的选择是使用带有 pgadmin4 的预配置 docker 容器。例如,可以从以下位置下载 pgadmin4 docker 映像 https://hub.docker.com/r/dpage/pgadmin4/.

希望这会有所帮助。

【讨论】:

因此,使用您使用的 virtualenv 创建一个目录然后启动它是有意义的。奇怪的是,您需要指向 python 2.7 站点包中的文件位置才能启动应用程序。这看起来是不是有点令人费解?这真的是人们每次想要启动 PgAdmin4 时必须遵循的预期工作流程吗? @kuanb,根据官方网站pgadmin.org/download/pip4.php,您需要在python 2.7'站点包中使用该路径才能运行pgadmin4。作为一种解决方法,我创建了一个别名,在那里我激活了 virtualenv,然后运行 ​​pgadmin4,它运行良好。我将编辑答案以显示它是如何工作的。 @Nurzhan 我认为您在别名定义中调用 pgadmin4.py 文件之前缺少“python”。 @newdimension 不,在调用pgadmin4.py 之前不需要pythonpgadmin4.py 本身就是一个可执行文件。 这一行有错误。 wget https://ftp.postgresql.org/pub/pgadmin3/pgadmin4/v1.1/pip/pgadmin4-1.1-py2-none-any.whl 不需要 pgadmin3 文件夹。正确的网址应该是 https://ftp.postgresql.org/pub/pgadmin/pgadmin4/v1.1/pip/pgadmin4-1.1-py2-none-any.whl【参考方案2】:

按照关于将 PgAdmin 4 添加到我的 Fedora 28 的文档以各种可能的方式失败后,我选择了 Docker 选项:

mkdir ~/.pgadmin4  # to store config and stuff
docker run -d --rm --network host -v ~/.pgadmin4:/pgadmin thajeztah/pgadmin4

然后转到http://localhost:5050,您就完成了。

请参阅https://github.com/thaJeztah/pgadmin4-docker 了解更多信息。

【讨论】:

这是迄今为止最简单的解决方案。我现在在 Chromebook 上运行 Docker 和 pgAdmin4。有关 Chrombook Docker 设置的详细信息,请按照以下步骤操作:在 Chromebook 上安装 Docker curl -fsSL download.docker.com/linux/debian/gpg | sudo apt-key add - sudo apt-get install apt-transport-https ca-certificates curl gnupg2 software-properties-common sudo add-apt-repository "deb [arch=amd64] download.docker.com/linux/debian $(lsb_release -cs) stable" sudo apt update sudo apt install docker-ce sudo usermod -a -G docker $USER【参考方案3】:

请尝试以下命令:

sudo apt-get install pgadmin4

sudo python3.5 /usr/share/pgadmin4/web/pgAdmin4.py

【讨论】:

然后您必须将每个烧瓶扩展安装到您的 python 3.5 安装中 sudo apt-get install pgadmin4 在发布此评论之日不再有效。它给出了一个错误E: Package 'pgadmin4' has no installation candidate【参考方案4】:

在 debian 上,至少 web 版本 不依赖于 sudo apt install pgadmin4-web。知道您可能需要富客户端,但您可以将其视为替代方案

【讨论】:

【参考方案5】:

对于以下链接 - 错误 404:未找到。

wget https://ftp.postgresql.org/pub/pgadmin3/pgadmin4/v1.1/pip/pgadmin4-1.1-py2-none-any.whl

使用备用链接

wget https://ftp.postgresql.org/pub/pgadmin/pgadmin4/v1.4/pip/pgadmin4-1.4-py2.py3-none-any.whl

也运行reference

pip install pgadmin4-1.4-py2.py3-none-any.whl -U psycopg2

【讨论】:

【参考方案6】:

如果您使用 Windows,请尝试删除该文件夹:%APPDATA%\pgAdmin

【讨论】:

以上是关于尝试运行 pgAdmin4 时出错的主要内容,如果未能解决你的问题,请参考以下文章

PostgresSQL客户端pgAdmin4使用

markdown pgadmin4使用docker运行

markdown pgadmin4使用docker运行

pgadmin4工具安装及使用

docker部署pgadmin4并通过nginx反向代理

从 pgAdmin4 导出的 csv 文件中保留索引列