【问题标题】:VirtualEnv not setting paths correctly, unable to use installed moduleVirtualEnv 未正确设置路径,无法使用已安装的模块
【发布时间】:2017-09-07 07:49:58
【问题描述】:

短版:如何让 PyQt4 的 configure.py 使用虚拟环境中安装的 SIP 版本?

长版: 我知道这个问题的变化在这里被问了一百万次,但我似乎找不到答案。我正在尝试在虚拟环境 (VE) 中安装 SIP 和 PyQt4。我无法将它安装到主系统,因为它是一台工作计算机。我们有旧版本的 PyQt,所以我无法从站点包中复制。

我已经在我的 VE(configure.py --incdir,make,make install)中安装了 SIP,但是当我在 PyQt4 上运行配置时,我收到错误:错误:此版本的 PyQt 需要 SIP v4.19.0 或更高版本.我安装了 4.19.2 版。运行 sipconfig 时,它告诉我它仍在使用系统版本,即使激活了 VE。如何告诉 PyQt 的 configure.py 使用安装在 VE 中的包?

谢谢大家!

编辑:看起来,我的 VE 似乎没有从正确的位置拉出 python 库,即使 VE 被激活。我添加了一行来激活将站点包和 bin dirs 路径和站点包附加到 pythonpath,但没有成功。它仍然没有找到正确的库。

【问题讨论】:

  • 我还是有点坚持。我能够激活 VE。这是一些终端输出...
  • [ve2] [OMMITED] /home/OMMITED/OSE_test/ve2 > python2.7 PyQt4_gpl_x11-4.12/configure.py 错误:此版本的 PyQt 需要 SIP v4.19.0 或更高版本 [ve2] [ OMMITED] /home/OMMITED/OSE_test/ve2 > 哪个 sip ./bin/sip
  • 查看 SIP 的库时,看起来它仍在使用系统库而不是 VE 库。
  • > whichpy sipconfig /a/path/on/sys/python2.7/sipconfig.py
  • 不要更新 cmets 中的问题 - 编辑主帖,以便主要内容是最新的 - 它说明了您当前遇到的实际问题。

标签: python pyqt4 virtualenv python-sip


【解决方案1】:

在您的虚拟环境中安装 pip。并使用which pip 检查 pip 是否使用了正确的目录。如果没有使用正确的目录,试试这个:

pip install --target=<location of site packages of your pip in your virtual env> sip==4.19

如果您收到名为权限被拒绝的错误,请使用

sudo chown -R your_username:your_username path/to/virtuaelenv/

然后做:

pip install PyQt4

如果以上方法均无效,请按照以下说明操作:

http://movingthelamppost.com/blog/html/2013/07/12/installing_pyqt____because_it_s_too_good_for_pip_or_easy_install_.html

【讨论】:

    【解决方案2】:

    尝试使用 anaconda anaconda 是一个 python 发行版,它包括一个替代的包管理器(除了 pip)和一个替代的虚拟环境机制

    conda 包可以很好地与 conda venv 机制配合使用,因此您应该不会遇到这些问题,并且不需要修改 3rd 方脚本或手动创建链接

    安装自:https://www.continuum.io/downloads

    创建一个虚拟环境运行

    conda create -n <name>
    

    激活 venv

    source activate <name>
    

    (当使用 shell\bash 时)

    安装pyqt运行:

    conda install pyqt
    

    【讨论】:

      【解决方案3】:

      您无需从源代码构建 SIP。这里有轮子文件https://pypi.python.org/pypi/SIP

      在我的情况下,在 macos 上,我必须下载轮子并重命名它以欺骗 pip 安装它:

      $ curl -L -O 'https://pypi.python.org/packages/f9/8c/23d88c8e4d457031111b70ec25bf97844776ec16cfd4688f318dcaeba5d6/sip-4.19.2-cp35-cp35m-macosx_10_6_intel.whl#md5=eb42e9975cae2b936ecc980b9a3266ed'
      $ mv sip-4.19.2-cp35-cp35m-*.whl sip-4.19.2-cp35-none-macosx_10_11_x86_64.whl
      $ pip install sip-4.19.2-cp35-none-macosx_10_11_x86_64.whl
      

      Pip 相当愚蠢。文件名必须与 pip 为您的平台知道的内容相匹配。

      然后,我能够使用python configure-ng.py 进行安装(在使用brew upgrade qt 将我的mac 上的qt 从5.5 升级到5.8 之后,由于错误https://forum.qt.io/topic/71119/project-error-xcode-not-set-up-properly/7

      然后我得到了一个很好的错误:

      $ python configure-ng.py --verbose
      Querying qmake about your Qt installation...
      Determining the details of your Qt installation...
      /usr/local/Cellar/qt5/5.8.0_2/bin/qmake -o qtdetail.mk qtdetail.pro
      Info: creating stash file /Users/jrwren/Downloads/PyQt4_gpl_mac-4.12/.qmake.stash
      make -f qtdetail.mk
      /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++ -c -pipe -stdlib=libc++ -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk -mmacosx-version-min=10.9  -O2 -std=gnu++11 -Wall -W -fPIC -DQT_NO_DEBUG -DQT_CORE_LIB -I. -I/usr/local/Cellar/qt/5.8.0_2/lib/QtCore.framework/Headers -I. -I/usr/local/Cellar/qt/5.8.0_2/mkspecs/macx-clang -F/usr/local/Cellar/qt/5.8.0_2/lib -o qtdetail.o qtdetail.cpp
      /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++ -headerpad_max_install_names -stdlib=libc++ -Wl,-syslibroot,/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk -mmacosx-version-min=10.9  -o qtdetail.app/Contents/MacOS/qtdetail qtdetail.o   -F/usr/local/Cellar/qt/5.8.0_2/lib -framework QtCore -framework DiskArbitration -framework IOKit
      qtdetail.app/Contents/MacOS/qtdetail
      This is the GPL version of PyQt 4.12 (licensed under the GNU General Public
      License) for Python 3.5.1 on darwin.
      Error: This version of PyQt4 and the commercial version of Qt have incompatible
      licenses.
      

      但这不是 SIP 错误。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-12-12
        相关资源
        最近更新 更多