【问题标题】:How to install psycopg2 on mac with virtualenv on Python3.6?如何在 Python3.6 上使用 virtualenv 在 mac 上安装 psycopg2?
【发布时间】:2023-04-08 22:32:01
【问题描述】:

我在 virtualenv 中运行 OSX 10.12.2 (16C67) 和 3.6.0。

我已经测试了以下内容。

➜  ~ brew services restart postgresql
Stopping `postgresql`... (might take a while)
==> Successfully stopped `postgresql` (label: homebrew.mxcl.postgresql)
==> Successfully started `postgresql` (label: homebrew.mxcl.postgresql)

➜  ~ pg_config
BINDIR = /usr/local/Cellar/postgresql/9.6.1/bin
DOCDIR = /usr/local/Cellar/postgresql/9.6.1/share/doc/postgresql
HTMLDIR = /usr/local/Cellar/postgresql/9.6.1/share/doc/postgresql
INCLUDEDIR = /usr/local/Cellar/postgresql/9.6.1/include
PKGINCLUDEDIR = /usr/local/Cellar/postgresql/9.6.1/include
INCLUDEDIR-SERVER = /usr/local/Cellar/postgresql/9.6.1/include/server
LIBDIR = /usr/local/lib
PKGLIBDIR = /usr/local/lib/postgresql
LOCALEDIR = /usr/local/Cellar/postgresql/9.6.1/share/locale
MANDIR = /usr/local/Cellar/postgresql/9.6.1/share/man
SHAREDIR = /usr/local/share/postgresql
SYSCONFDIR = /usr/local/etc/postgresql
PGXS = /usr/local/lib/postgresql/pgxs/src/makefiles/pgxs.mk
CONFIGURE = '--disable-debug' '--prefix=/usr/local/Cellar/postgresql/9.6.1' '--datadir=/usr/local/share/postgresql' '--libdir=/usr/local/lib' '--sysconfdir=/usr/local/etc' '--docdir=/usr/local/Cellar/postgresql/9.6.1/share/doc/postgresql' '--enable-thread-safety' '--with-bonjour' '--with-gssapi' '--with-ldap' '--with-openssl' '--with-pam' '--with-libxml' '--with-libxslt' '--with-perl' '--with-tcl' '--with-tclconfig=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/lib' '--with-uuid=e2fs' 'CC=clang' 'LDFLAGS=-L/usr/local/opt/openssl/lib -L/usr/local/opt/readline/lib' 'CPPFLAGS=-I/usr/local/opt/openssl/include -I/usr/local/opt/readline/include'
CC = clang
CPPFLAGS = -DFRONTEND -I/usr/local/opt/openssl/include -I/usr/local/opt/readline/include -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/libxml2
CFLAGS = -Wall -Wmissing-prototypes -Wpointer-arith -Wdeclaration-after-statement -Wendif-labels -Wmissing-format-attribute -Wformat-security -fno-strict-aliasing -fwrapv -Wno-unused-command-line-argument -O2
CFLAGS_SL =
LDFLAGS = -L../../src/common -L/usr/local/opt/openssl/lib -L/usr/local/opt/readline/lib -Wl,-dead_strip_dylibs
LDFLAGS_EX =
LDFLAGS_SL =
LIBS = -lpgcommon -lpgport -lxslt -lxml2 -lpam -lssl -lcrypto -lgssapi_krb5 -lz -lreadline -lm
VERSION = PostgreSQL 9.6.1

➜  ~ gcc --version
Configured with: --prefix=/Applications/Xcode.app/Contents/Developer/usr --with-gxx-include-dir=/usr/include/c++/4.2.1
Apple LLVM version 8.0.0 (clang-800.0.42.1)
Target: x86_64-apple-darwin16.3.0
Thread model: posix
InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin

检查是否安装了 XCode 工具。但是在尝试安装 psycopg2 时我不断收到错误消息。任何想法下一步做什么。

** 编辑

我只是尝试使用相同的 Python 版本在 virtualenv 之外安装它,并且安装时没有任何问题。

➜  ~ pip3 install psycopg2
Collecting psycopg2
  Using cached psycopg2-2.6.2.tar.gz
Building wheels for collected packages: psycopg2
  Running setup.py bdist_wheel for psycopg2 ... done
  Stored in directory: /Users/Kimmo/Library/Caches/pip/wheels/49/47/2a/5c3f874990ce267228c2dfe7a0589f3b0651aa590e329ad382
Successfully built psycopg2
Installing collected packages: psycopg2
Successfully installed psycopg2-2.

6.2

【问题讨论】:

    标签: python macos python-3.x virtualenv psycopg2


    【解决方案1】:

    Python 2 和 Python 3 都有一个与之关联的 pip 实用程序。因此,如果您将两者都安装在同一目录中,则第二次安装可能会覆盖第一次安装的 pip

    如果您想确定自己运行的是哪个版本,运行python2 -m pippython3 -m pip 总是最安全的。

    一旦您正确激活了虚拟环境,pip 应该是默认运行的,确保安装在虚拟环境中进行。如果 virtualenv 不包含 pip,您会发现将软件包安装到您的 virtualenv 会更加困难。

    【讨论】:

      【解决方案2】:

      似乎我的配置pip install -r requirements.txt 在使用python3 时失败了。

      我通过运行 pip uninstall -r requirements.txt 然后运行 ​​pip3 install -r requirements.txt 解决了这个问题

      【讨论】:

      • 似乎对于pip 将执行哪个有些混淆。这不好。在这些情况下(假设您知道哪个python 将运行:-))通常最好改用python -m pip
      • 啊,我从来没有意识到我可以像任何其他带有 -m 标志的 Python 模块一样运行 pip。是的,这可能是更好的主意
      • 是的,它像pip 一样处理参数,并且更容易确定使用哪个参数。但我怀疑真正的问题是将 python2 和 python3 安装在同一目录中
      • 如果你想用它写一个 aswer,我接受。无论如何,还是感谢您的帮助。
      • 酷。保留此答案可能也很好,因为其他人无疑会感谢您对如何摆脱错误内容的建议。
      猜你喜欢
      • 2015-01-27
      • 2019-01-14
      • 1970-01-01
      • 2012-03-29
      • 2013-07-04
      • 1970-01-01
      • 1970-01-01
      • 2011-03-03
      • 2021-08-06
      相关资源
      最近更新 更多