“psycopg2构建轮失败” - MacOSX使用virtualenv和pip

时间:2015-12-16 05:52:31

标签: python django postgresql virtualenv psycopg2

我第一次尝试与其他几个网站建立网站,并且在尝试使用Django / Python / VirtualEnv时遇到了一个奇怪的错误。我已经为其他操作系统找到了解决这个问题的方法,比如Ubuntu,但是找不到适合Mac的好解决方案。

这是正在运行的相关代码:

virtualenv -p python3 venv
source venv/bin/activate
pip install -r requirements.txt

运行该块后,我收到以下错误:

  

的AssertionError

           

django-toolbelt的构建轮失败    为psycopg2运行setup.py bdist_wheel

...

  

的AssertionError

           

psycopg2的构建轮失败    无法构建django-toolbelt psycopg2

我相信我已经安装了“django-toolbelt”和“psycopg2”,所以我不确定它为什么会失败。

我能想到的唯一区别是我没有使用命令

sudo apt-get install libpq-dev

按照Ubuntu用法的指示,因为我相信用brew安装postgresql会处理标题。

感谢您的帮助或见解!

16 个答案:

答案 0 :(得分:40)

我在Arch linux上遇到了同样的问题。我认为这不是操作系统依赖的问题。无论如何,我通过找到过时的包并更新然后来解决这个问题。

pip uninstall psycopg2
pip list --outdated
pip install --upgrade wheel
pip install --upgrade setuptools
pip install psycopg2

希望这会有所帮助...

答案 1 :(得分:26)

对于MacOS用户

尝试了所有上述方法(在MacOS 10.14上对我不起作用)后,该方法起作用了:

  • 如果没有,请使用brew install openssl安装openssl。
  • 将openssl路径添加到LIBRARY_PATH
export LIBRARY_PATH=$LIBRARY_PATH:/usr/local/opt/openssl/lib/
  • 使用pip pip3 install psycopg2安装psycopg2

答案 2 :(得分:14)

对于Mac OS X用户:

<强> 1。首先在终端中运行以下命令检查postgresql路径:

pg_config

如果此操作失败,请查找如何将pg_config添加到路径中。

<强> 2。接下来通过在终端中运行此命令来安装Xcode Tools:

xcode-select --install

如果你现在已经解决了这两个问题,请尝试再次安装psycopg2

答案 3 :(得分:6)

TDLR

如果您不习惯安装Python C扩展,并且psycopg2不是您工作的核心部分,请尝试

pip install psycopg2-binary

本地构建

psycopg2是C扩展名,因此在被pip安装时需要编译。 docs的“构建先决条件”部分说明了必须进行哪些操作才能通过pip进行安装。总结(对于psycopg 2.8.5):

  • 必须在计算机上安装C编译器
  • 必须安装Python头文件
  • 必须安装libpq头文件
  • 必须安装pg_config程序(通常带有libpq标头)并在$PATH上。

满足这些先决条件后,pip install psycopg2应该成功。

安装预编译的车轮

或者,pip可以安装pre-compiled binaries,因此不需要编译(和相关的设置)。它们可以这样安装:

pip install psycopg2-binary

文档指出

psycopg2-binary软件包供初学者使用Python和PostgreSQL,而无需满足构建要求。

但是我建议psycopg2-binary对于本地开发工作来说通常足够好,如果您不是直接使用psycopg2而是作为依赖项的话。

结论性建议

阅读内容丰富的installation documentation,不仅可以解决安装问题,还可以了解在某些情况下使用预编译的二进制文件的影响。

答案 4 :(得分:5)

在OS X上,我只需通过在安装psycopg2之前升级滚轮来解决这个问题:

pip install --upgrade wheel

答案 5 :(得分:5)

对于MacOS用户,this问题具有正确的解决方案:

必要时安装命令行工具:

xcode-select --install

然后

env LDFLAGS="-I/usr/local/opt/openssl/include -L/usr/local/opt/openssl/lib" pip install psycopg2

答案 6 :(得分:4)

我也遇到了同样的错误。 使用Python 3.7.3和pip 19.1.1。

error screen

我使用了以下命令。

pip install psycopg2-binary==2.8.3

答案 7 :(得分:3)

对于OSX Sierra用户,似乎xcode更新是解决方案:Can't install psycopg2 package through pip install... Is this because of Sierra?

答案 8 :(得分:3)

我尝试了上述所有解决方案,但它们对我不起作用。我所做的是将我的requirements.txt文件中的psycopg2版本从psycopg2==2.7.4更改为psycopg2==2.7.6

答案 9 :(得分:1)

您的错误消息是否完整?无法从pip在mac上安装psycopg2的最常见原因是pg_config不在路径中。 顺便说一句,使用macports或fink来安装psycopg2是更值得推荐的方式,所以你不必担心pg_config,libpq-dev和python-dev。

加,是否使用Python 3.5?然后将你的车轮升级到&gt; 0.25.0使用pip。

答案 10 :(得分:1)

尝试安装sudo apt-get install python3.7-dev

或者您可以尝试安装其他开发库

sudo apt-get install python3.7 python-dev python3.7-dev \
 build-essential libssl-dev libffi-dev \
 libxml2-dev libxslt1-dev zlib1g-dev \
 python-pip

答案 11 :(得分:1)

我遇到了同样的问题,这似乎是莫哈韦问题,我可以通过以下方式解决:

sudo installer -pkg /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg -target /

答案 12 :(得分:1)

我在几个包装上都有此问题,包括psycopg2,numpy和pandas。我只是从requirements.txt文件中删除了该版本,然后就可以了。

所以我没有 psycopg2-binary == 2.7.6.1

答案 13 :(得分:0)

我遇到了同样的问题,但是上面的答案对我不起作用。 这就是我在requirements.txt中所做的 psycopg2-binary == 2.7.6.1 ,它工作正常

答案 14 :(得分:0)

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

django-heroku == 0.3.1

由于此软件包本身将在服务器部署中安装所需的软件包,例如 psycopg2 。因此,让服务器(heroku)负责吧。

答案 15 :(得分:-2)

在提出所有建议方法之后,

仍然出现相同的错误。

我正在尝试在python3.7上安装pyflux并收到“建筑轮子失败”的错误

Command "/usr/local/opt/python/bin/python3.7 -u -c "import setuptools, tokenize;__file__='/private/var/folders/my/j2x0d1_x43gg2p137mhdcg4c0000gp/T/pip- install-nnztafuf/pyflux/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" install --record /private/var/folders/my/j2x0d1_x43gg2p137mhdcg4c0000gp/T/pip-record-kk6dncw5/install-record.txt --single-version-externally-managed --compile" failed with error code 1 in /private/var/folders/my/j2x0d1_x43gg2p137mhdcg4c0000gp/T/pip-install-nnztafuf/pyflux/

我的车轮已更新