如何在一个要求依赖于 gcc-4.5 版本的情况下使用 pip install
我正在我的 virtualenv 中的 Python 2.7.2 下安装一个为 pip 打包的 Egg。 该egg有16个要求,其中之一(pycryptopp 0.5.29)已知在gcc-4.6中失败,因此必须使用4.5进行编译。系统同时安装了 gcc-4.6(默认)和 gcc-4.5。
如何配置/hack pip install 来专门构建这个包? (或者我只是在安装此软件包时临时拼凑链接 /usr/bin/gcc)
我是否需要清理它损坏的现有 (virtualenv)/build 目录,如果是的话如何?
(我已经阅读了 pip 文档并搜索了 SO + SU)
I am installing an egg packaged for pip, inside my virtualenv, under Python 2.7.2.
The egg has 16 requirements, one of which (pycryptopp 0.5.29) is known to fail with gcc-4.6 and hence must be compiled with 4.5. The system has both gcc-4.6 (default) and gcc-4.5 installed.
How do I configure/hack pip install to build this package specially? (or do I just temporarily kludge the link /usr/bin/gcc while installing this package)
Do I need to clean up the existing (virtualenv)/build directory where it broke, and if so how?
(I already read the pip documentation and searched SO + SU)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
无需在这里摆弄符号链接。在大多数 Linux 系统上,您可以将编译器设置为与 CC 环境变量一起使用。对于 pycryptopp 和 pip,以下内容可能会有所帮助:
假设您已在该位置安装了 GCC 4.5。这对我在安装了 gcc-4.5 和 g++-4.5 软件包的 Ubuntu 11.10 (oneiric) 上运行得很好。
No need to fiddle around with symlinks here. On most Linux systems you can set the compiler to use with the CC env var. In case of pycryptopp and pip the following might help:
given that you have GCC 4.5 installed in that location. This worked fine for me on Ubuntu 11.10 (oneiric) with packages gcc-4.5 and g++-4.5 installed.
(我将问题重新命名为“如何使用 pip install 其中一个要求必须使用 gcc-4.5 进行编译?”)
1)正确的方法是使用 "--disable-embedded-cryptopp" 进行构建它链接到 libcryptopp。 有些人报告运行时问题,但它对我有用。
2.)我使用的一个真正丑陋的解决方法(ulif 有用地指出可以通过使用 CC=.. 来避免)是专门针对问题包调用 pip install ,并暂时将链接链接到 gcc。
这不好的进一步原因是:它需要 root 访问权限并弄乱 gcc 二进制文件的链接。它肯定不能是 Makefile 的。
(I retitled the question from "How to use pip install where one requirement must be compiled with gcc-4.5?")
1) The correct method is to build with "--disable-embedded-cryptopp" which links to libcryptopp. Some people report runtime issue but It Works For Me.
2.) A truly ugly workaround which I used (and which ulif helpfully points out can be obviated by using CC=.. ) is to invoke pip install specifically for the problem package, and temporarily kludge the link to gcc.
Further reasons this is bad: it requires root access and messing with the link to gcc binary. It certainly can't be Makefile'd.
添加此内容是为了完整性,以扩展现有的良好答案;如果您使用的是基于 apt 的发行版,例如
Ubuntu
或Debian
,您可以执行以下操作:第 1 步:安装您需要的 gcc/g++ 版本
第 2 步:将您的 gcc/g++ 版本安装到操作系统的“替代”系统中:
第 3 步:选择您的活动 gcc/g++ 版本
在每种情况下,它都会询问您您想要哪个版本,或者使用您提供的“权重”会自动为您选择:
提示:如果您想删除版本,只需使用此:
您仍将使用 root/sudo 访问权限来执行此操作,但它比处理手动删除/创建链接,或在命令行上指定环境变量。这是在基于 arpt 的发行版中为各种事物选择版本的推荐方法。
Adding this for completeness to extend upon the existing good answers; if you are on apt based distribution such as
Ubuntu
orDebian
, you can do the following:Step 1: Install the versions of gcc/g++ you need
Step2: Install your gcc/g++ versions into "alternatives" system of your OS:
Step 3: Select your active gcc/g++ versions
It will in each case ask you which version you want, or use the "weight" you provided to select automatically for you:
TIP: If you want to delete a version, simply use this:
You will still use root/sudo access to do this, but it is much cleaner than dealing with manually deleting/creating links, or specifying environment variables on the commandline. It is the recommended way of selecting versions for all kinds of things in arpt based distributions.