在Ubuntu 14.04上使用Python 3.4安装uWSGI失败(路径问题?)

9
大致意思是我想要安装带有nginx、uWGI和Python 3(virtualenv)的Ubuntu服务器来开始一些项目。我已经按照各种地方的建议进行了尝试。当我尝试使用“sudo pip install uwsgi”安装uWSGI时,我遇到了以下错误信息:
plugins/python/uwsgi_python.h:2:20: fatal error: Python.h: No such file or directory

我找到了2012年9月[J.F.Sebastian的评论][1],提到需要安装$ sudo apt-get install python2.7-dev ——这是针对Python 2.7的。所以,我也为Python 3.4 进行了类似操作(看起来成功了)。但是,我仍然遇到了错误。
当尝试搜索Python.h时,我可以找到:
[1]: https://dev59.com/2WjWa4cB1Zd3GeqPudSm#12583719
$ locate Python.h
/usr/include/python3.4m/Python.h

我应该设置什么才能安装uWSGI?(我对Ubuntu Linux相当新,尽管我在中年时期曾经使用过Unix ;)

更新:

根据下面评论中jwalker的建议,我在激活的虚拟环境内并且没有使用sudo执行了pip install uwsgi。但是安装程序无法在venv目录中创建子目录(如build)。我尝试为venv使用chmod go+w,但没有帮助。我承认我对virtualenv和pip一无所知,而且我的Unix知识有点生疏:

  ...
  File "/var/www/hec_project/hec_venv/lib/python3.4/site-packages/pip/req.py", line 218, in build_location
    _make_build_dir(build_dir)
  File "/var/www/hec_project/hec_venv/lib/python3.4/site-packages/pip/req.py", line 1527, in _make_build_dir
    os.makedirs(build_dir)
  File "/var/www/hec_project/hec_venv/lib/python3.4/os.py", line 237, in makedirs
    mkdir(name, mode)
PermissionError: [Errno 13] Permission denied: '/var/www/hec_project/hec_venv/build'

Storing debug log for failure in /home/hecadmin/.pip/pip.log

2
首先,如果您正在将uWSGI安装到虚拟环境中,请不要使用sudo,激活venv然后只需使用pip。现在我不确定您遇到了什么问题,但这对我在Ubuntu 12.04上有效:sudo apt-get install python3sudo apt-get install python3-devvirtualenv -p python3 venvsource venv/bin/activatepip install uwsgi - jwalker
2
你的虚拟环境出了问题。你应该能够创建子目录。重新创建虚拟环境。使用相同的用户运行@jwalker评论中的命令。 - jfs
@jwalker,你能把你的建议复制成答案吗?这样我就可以接受它了。 - pepr
@pepr 哦,我没有意识到你的原始目录是受写保护的。如果不是这样,你不应该像我之前说的那样使用 sudo 来安装 virtualenvpip(因为它会使权限变得复杂)。但既然是这样,尝试同时对 virtualenvpip 命令使用 sudo,并且可以保持 activate 不变。总之,请尝试:sudo apt-get install python3sudo apt-get install python3-devsudo virtualenv -p python3 venvsource venv/bin/activatesudo pip install uwsgi - jwalker
@jwalker:我不确定,但我认为我试过sudo所有命令。问题在于安装程序运行C/C++编译器,而似乎有些部分无法以此方式获得写入权限。 - pepr
显示剩余7条评论
2个回答

20

安装 Python 3:

sudo apt-get install python3

安装 Python 3 头文件以从源代码构建 uWSGI:

sudo apt-get install python3-dev
在当前目录下的venv子目录中创建一个 Python 3 虚拟环境(如果当前目录有权限,请在命令前加上sudo)。
virtualenv -p python3 venv

激活虚拟环境,使其成为pip的目标(.source的一种快捷方式):

. venv/bin/activate

最后,安装uWSGI(如果在特权目录中,请使用sudo):

pip install uwsgi

我也想做同样的事情,但是如何为每个应用程序设置它们自己的虚拟环境和独立的uwsgi安装呢?这些可以与upstart集成吗?在这种情况下,uwsgi实例是如何管理的? - monkut
1
@monkut 每个虚拟环境将拥有独立的uwsgi可执行文件。它们可以直接进入upstart,或者更好的是进入supervisord - jwalker

6

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接