当开发系统上未安装 PostgreSQL 时,将 psycopg2 安装到 virtualenv 中



当我的开发系统(装有OS X 10.6的MacBook Pro(上未安装PostgreSQL时,是否可以将psycopg2安装到virtualenv中?

当我从virtualenv中运行pip install psycopg2时,我收到了如下所示的错误。

我正在尝试使用 Django 连接到服务器上的遗留数据库,如果可能的话,我不希望在我的开发系统上安装 PostgreSQL。

为什么不安装PostgreSQL?

我在使用自制软件安装 PostgreSQL 时收到错误。我的MacBook Pro上安装了Xcode4 - 而且只有Xcode4,我认为这与缺少gcc 4.0有关。但是,这是另一个StackOverflow问题的问题。

2011年4月12日上午8:37更新:我仍然想知道这是否可能,而无需在我的MacBook Pro上安装PostgreSQL。但是,我运行brew update并强制重新安装 ossp-uuid brew install --force ossp-uuid现在brew install postgresql工作。成功安装 PostgreSQL 后,我能够从我的 virtualenv 中pip install psycopg2

来自pip install psycopg2的错误

$ pip install psycopg2
Downloading/unpacking psycopg2
  Running setup.py egg_info for package psycopg2
    Error: pg_config executable not found.
    Please add the directory containing pg_config to the PATH
    or specify the full executable path with the option:
        python setup.py build_ext --pg-config /path/to/pg_config build ...
    or with the pg_config option in 'setup.cfg'.
    Complete output from command python setup.py egg_info:
    running egg_info
writing pip-egg-info/psycopg2.egg-info/PKG-INFO
writing top-level names to pip-egg-info/psycopg2.egg-info/top_level.txt
writing dependency_links to pip-egg-info/psycopg2.egg-info/dependency_links.txt
warning: manifest_maker: standard file '-c' not found
Error: pg_config executable not found.
Please add the directory containing pg_config to the PATH
or specify the full executable path with the option:
    python setup.py build_ext --pg-config /path/to/pg_config build ...
or with the pg_config option in 'setup.cfg'.
----------------------------------------
Command python setup.py egg_info failed with error code 1
Storing complete log in /Users/matthew/.pip/pip.log

初步研究

以下是我作为初步研究阅读的文章:

  • 安装 psycopg2 以在 OS X 上使用 Django 和 PostgreSQL
  • 在 OS X 上安装 psycopg2
  • 在 Ubuntu 上使用 psycopg2 和 virtualenv JauntyLucid
  • Postgres, psycopg2, virtualenv install hints
apt-get install libpq-dev

帮助我在 Debian 挤压

来自评论:

apt-get install python-dev-is-python3

>psycopg 依赖于pg_config命令,如果没有它,则无法安装 psycopg。

如果系统安装对您来说是一个问题,为什么不尝试编译PostgreSQL并在$PATH中包含生成的bin文件呢?喜欢:

export PATH=/path/to/compiled/postgresql/bin:"$PATH"
pip install psycopg2
brew install postgresql
export LDFLAGS="-L/usr/local/opt/openssl/lib"
export CPPFLAGS="-I/usr/local/opt/openssl/include"
pip3 install psycopg2
apt-get install libpq-dev

在 Debian 挤压中也帮助了我。之后做点安装psycopg2。当我在heroku上设置环境时pg_config我遇到了没有找到的问题,现在它工作正常。

您需要安装 python-dev 包才能使用 python 扩展,例如 psycopg2 。我不知道如何在 mac 中安装软件包,但我运行以下命令在我的 Ubuntu 机器上安装 python 软件包。

sudo apt-get install python-dev 

sudo apt-get install python3-dev

如果你使用的是Python3.x。

安装完成后,在虚拟环境中运行以下命令。

pip install psycopg2

你不需要安装完整的PostgreSQL:你只需要客户端库。

我在MAC OSX中使用以下命令解决了它:

$ wget https://ftp.postgresql.org/pub/source/v9.5.3/postgresql-9.5.3.tar.bz2
$ tar xfv postgresql-9.5.3.tar.bz2
$ cd postgresql-9.5.3
$ ./configure
$ make
$ cd src/bin/pg_config
$ export PATH=`pwd`:"$PATH"
$ pip install psycopg2

使用pip install psycopg2-binary,当pip install psycopg2不起作用时,它对我有用。

使用您在 4 月 12 日更新中描述的方法,我能够安装 PostgreSQL(+1(。 请注意,我最初运行的是Python 2.7.1(32位(,自制软件抛出了几个关于使用32位版本的Python的错误和警告。 此后,我切换了 64/32 位版本的 2.7.1,它就像冠军一样工作。

关于pyscopg2,我能够通过编辑setup.cfg将其从源代码安装到我的虚拟环境中。 我pg_config设置为在自制软件的Cellar中更正路径(pg_config=/usr/local/Cellar/postgresql/9.0.4/bin/pg_config(。 保存更改后,我运行了python setup.py 安装,没有问题。 值得注意的是,我没有将Mac的默认python设置为32位。 我从头到尾都使用了新的 64 位。

在查看了一些文档后,我认为如果我将自制软件的 postgresql 路径添加到系统路径中,我可以使用 pip 来安装它。

参考:
http://favosdream.blogspot.com/2009/09/make-psycopg2-and-readline-work-in-snow.html

更新 6-8-2011:
在将OS X上编写的项目移植到Windows 7时,我发现我也必须在Windows上安装PostgreSQL。 这最终在我的启动屏幕上创建了另一个用户和其他我不喜欢的东西。 在做一些挖掘时,我在这里找到了PostgreSQL的Windows驱动程序。 此后,我卸载了完整的PostgreSQL并安装了ODBC驱动程序,到目前为止,这些驱动程序运行良好。

为了解决最初的问题,在进行了更多的挖掘之后,我想我在这里找到了适用于OS X的等效ODBC。 我没有机会尝试它们,但这个概念在 Windows 7 上效果很好。 当我有机会尝试它们时,我会更新它。 在那之前,我希望这有所帮助。

以上所有内容都对我不起作用(OS Catalina 10.15.1(

与古典postgreshomebrew版本存在冲突。请通过命令删除自制版本

$ brew uninstall postgresql

然后从官方网站安装:

$ sudo mkdir -p /etc/paths.d && echo /Applications/Postgres.app/Contents/Versions/latest/bin | sudo tee /etc/paths.d/postgresapp

对于一个简单的psycopg2安装或django-heroku包来说,这是实际的。

如果你最近更新了python或更改了默认的python(假设从3.6到3.8(。以下代码

sudo apt-get install python-dev   OR    sudo apt-get install python3-dev

将安装/工作在以前的 Python 版本。

因此,如果您希望此命令适用于最近更新/更改的 Python 版本,请尝试在命令中提及特定版本,例如 python3.8

sudo apt-get install python3.8-dev  

尝试以上,如下

pip install wheel
export PATH=/path/to/compiled/postgresql/bin:"$PATH"
sudo apt-get install libpq-dev
sudo apt-get install python3.x-dev    **Change x with your version, eg python3.8**
pip install psycopg2-binary
pip install psycopg2

由于我从不需要在此服务器上安装 postgresql 数据库,因此我在同一台服务器上运行 pip 安装 psycopg2 之前,我在 Ubuntu 14_04 版本上安装了以下库

apt-get install libpq-dev python-dev 然后在虚拟环境中执行 pip 安装 psycopg2。

输出 收集灵痞2 使用缓存的 psycopg2-2.6.1.tar.gz用于收集包裹的构建轮子:psycopg2 为psycopg2运行 setup.py bdist_wheel 存储在目录中:/root/.cache/pip/wheels/e2/9a/5e/7b620848bbc7cfb9084aafea077be11618c2b5067bd532f329成功建造 psycopg2安装收集的软件包:psycopg2已成功安装 psycopg2-2.6.1

我知道

您要求开发环境,但如果您在服务器上部署,请说 Heroku。只需在项目的要求中添加以下行.txt即可。

姜戈-希罗库==0.3.1

由于此软件包本身将在服务器部署上安装所需的软件包,例如 psycopg2

尝试指定版本,它会起作用,在venv中执行此操作

pip install psycopg2-binary==2.8.6
根据

我的经验,apt install libpq-dev尝试在 venv 中安装psycopg2将解决许多问题,但是有关更多信息,您可以参考此链接:https://www.psycopg.org/docs/install.html

最新更新