最近在尝试搭 python 的数据分析的环境. 总结一下遇到的一些坑.

用的是 14.04 这个有点老的 ubuntu.

nginx + jupyter

jupyter 这个玩意的 web 写得不是很优美. 所以需要转发的地方蛮麻烦的.

本来想直接在 uri 里搞一下. 然后发现过于难受就放弃了, 重新配置了一个域名转发.

nginx 的 server 配置里需要加这么一段.

server {
	location ~* /(api/kernels/[^/]+/(channels|iopub|shell|stdin)|terminals/websocket)/? {
		proxy_set_header X-Real-IP $remote_addr;
		proxy_set_header Host $host;
		proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
		# WebSocket support
		proxy_http_version 1.1;
		proxy_set_header Upgrade $http_upgrade;
		proxy_set_header Connection $connection_upgrade;
		proxy_pass http://127.0.0.1:8888;
	}
}

其中有个Upgrade是这么定义的.

http {
	map $http_upgrade $connection_upgrade {
		default upgrade;
		''      close;
	}
	sendfile on;
}

google 了几个配置文件才弄出这么一个能用的.

scipy

用 pip3 装 scipy 的时候会有一个错误.

pip.exceptions.InstallationError: Command /usr/bin/python3 -c "import setuptools, tokenize;__file__='/tmp/pip_build_root/scipy/setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --record /tmp/pip-llz085yi-record/install-record.txt --single-version-externally-managed --compile failed with error code 1 in /tmp/pip_build_root/scipy

我以为是啥奇怪的依赖问题. 结果发现解决方法很简单. 直接 apt install python3-scipy 就完了.