首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >pip安装mod_wsgi在虚拟环境中失败

pip安装mod_wsgi在虚拟环境中失败
EN

Stack Overflow用户
提问于 2016-11-12 15:49:35
回答 1查看 6K关注 0票数 5

我正在尝试使用python2.7.10中的pip安装mod_wsgi,在mac 10.12上安装虚拟mac。我打算在一个Django 1.10.3中使用它。当我运行"pip mod_wsgi“时,我得到以下输出:

代码语言:javascript
复制
Collecting mod_wsgi
Using cached mod_wsgi-4.5.7.tar.gz
Complete output from command python setup.py egg_info:
Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "/private/var/folders/sf/kdqqs98d06326180mss7hggh0000gn/T/pip-build-hgA7s1/mod-wsgi/setup.py", line 247, in <module>
    APR_INCLUDES = get_apr_includes().split()
  File "/private/var/folders/sf/kdqqs98d06326180mss7hggh0000gn/T/pip-build-hgA7s1/mod-wsgi/setup.py", line 219, in get_apr_includes
    stdout=subprocess.PIPE, stderr=subprocess.PIPE)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/subprocess.py", line 710, in __init__
    errread, errwrite)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/subprocess.py", line 1335, in _execute_child
    raise child_exception
OSError: [Errno 2] No such file or directory

----------------------------------------
Command "python setup.py egg_info" failed with error code 1 in /private/var/folders/sf/kdqqs98d06326180mss7hggh0000gn/T/pip-build-hgA7s1/mod-wsgi/

我对virtualenv并不熟悉,所以我可能只是缺少了一些关于如何设置它的东西。我尝试过通过pip升级pip、重新安装setuptools和ez_setup。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-11-16 00:54:15

在mod_wsgi X MacOS上安装MacOS有两个问题。

第一个问题是,当涉及到能够安装第三方Apache模块时,Apple已经使它们提供的默认Apache安装完全不可用。这建立在他们在以前的MacOS X版本中已经存在的障碍之上,这意味着你必须跳过圈才能让它正常工作。

本例中的问题是,苹果已经从Xcode发行版中删除了apr-1-configapu-1-config程序。这意味着当对存在的Apache配置进行某些类型的查询时,apxs将失败。这是为Apache构建第三方模块所需的信息。在不知道头文件安装位置的情况下,Apache模块的构建将失败。

鉴于苹果打破了在每次操作系统更新中安装额外的Apache模块的能力,而且从来没有在操作系统的生命周期内修复过它,因此需要解决办法,因此它们不太可能再次解决这个问题。

在其他论坛中,解决问题的一个建议是安装带有brew的APR和APU包,然后将apr-1-configapu-1-config程序从这些程序链接到apxs正在寻找的位置。在我看来,这很容易出错,因为模块看起来可能是针对brew头文件编译的,它们可能与操作系统Apache安装提供的库版本不匹配。这可能会导致撞车。

因此,唯一有保证的解决方案是不使用操作系统提供的Apache安装。

因此,一种选择可能是使用brew安装Apache并使用Apache的brew安装(而不仅仅是brew中的APR和APU )。

如果使用pip install mod_wsgi方法,另一个选项是首先使用为mod_wsgi提供的pip可安装Apache。

代码语言:javascript
复制
pip install -vvv mod_wsgi-httpd

只有在没有选择的地方才能使用它,如果可以的话,您应该始终使用系统Apache。现在看来我们别无选择。

这将将Apache安装到Python安装或虚拟环境中。这将需要一些时间,因为它将编译/安装APR/APU/Apache以及其他可能需要的库。我正在使用-vvv,这样您就可以看到它正在进行编译,否则您可能会认为它挂起了。

一旦完成,然后运行pip install mod_wsgi

这只有在使用mod_wsgi-express时才有用。如果您想要将编译好的mod_wsgi与操作系统Apache一起使用,则不能使用它,因为这样构建的模块将与操作系统Apache不兼容。

第二个问题是,MacOS X更改了用于获取进程任务信息的操作系统API。这意味着mod_wsgi 4.5.7和更早版本无论如何都无法编译。mod_wsgi 4.5.8中有一个修复程序,或者您可以使用mod_wsgi github存储库中的代码,直到在需要时发布4.5.8。

更新1

在执行setup.py时,设法在pip install mod_wsgi中包含了一个黑客。这也将出现在mod_wsgi 4.5.8中。这意味着您仍然可以使用系统Apache,并且不需要安装单独的系统,例如使用pip install mod_wsgi-httpd。这不会解决用于安装configure/make的for mod_wsgi方法的类似问题。

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40564605

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档