{"action":"created","issue":{"url":"https://api.github.com/repos/snarfed/bridgy/issues/427","labels_url":"https://api.github.com/repos/snarfed/bridgy/issues/427/labels{/name}","comments_url":"https://api.github.com/repos/snarfed/bridgy/issues/427/comments","events_url":"https://api.github.com/repos/snarfed/bridgy/issues/427/events","html_url":"https://github.com/snarfed/bridgy/issues/427","id":95852229,"number":427,"title":"Deployment virtualenv-related outage post-mortem","user":{"login":"kylewm","id":950127,"avatar_url":"https://avatars.githubusercontent.com/u/950127?v=3","gravatar_id":"","url":"https://api.github.com/users/kylewm","html_url":"https://github.com/kylewm","followers_url":"https://api.github.com/users/kylewm/followers","following_url":"https://api.github.com/users/kylewm/following{/other_user}","gists_url":"https://api.github.com/users/kylewm/gists{/gist_id}","starred_url":"https://api.github.com/users/kylewm/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kylewm/subscriptions","organizations_url":"https://api.github.com/users/kylewm/orgs","repos_url":"https://api.github.com/users/kylewm/repos","events_url":"https://api.github.com/users/kylewm/events{/privacy}","received_events_url":"https://api.github.com/users/kylewm/received_events","type":"User","site_admin":false},"labels":[],"state":"closed","locked":false,"assignee":{"login":"snarfed","id":778068,"avatar_url":"https://avatars.githubusercontent.com/u/778068?v=3","gravatar_id":"","url":"https://api.github.com/users/snarfed","html_url":"https://github.com/snarfed","followers_url":"https://api.github.com/users/snarfed/followers","following_url":"https://api.github.com/users/snarfed/following{/other_user}","gists_url":"https://api.github.com/users/snarfed/gists{/gist_id}","starred_url":"https://api.github.com/users/snarfed/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/snarfed/subscriptions","organizations_url":"https://api.github.com/users/snarfed/orgs","repos_url":"https://api.github.com/users/snarfed/repos","events_url":"https://api.github.com/users/snarfed/events{/privacy}","received_events_url":"https://api.github.com/users/snarfed/received_events","type":"User","site_admin":false},"milestone":null,"comments":8,"created_at":"2015-07-18T19:21:57Z","updated_at":"2015-07-20T18:20:19Z","closed_at":"2015-07-20T14:45:43Z","body":"We had about a 20 minute outage today when I deployed with a bad virtualenv. I think I better understand how GAE vendoring works now, so this won't happen in the future.\r\n\r\nAll local tests passed, but when deployed, every request got a \"could not import module webmentiontools\" error. (webmention tools was installed in editable mode)\r\n\r\nI guess that GAE's vendoring code doesn't see packages installed in editable mode (i.e. to local/src instead of local/lib/python2.7/site-packages). The README suggests symlinking the project to local/lib but I kinda feel like this makes it easy to get in a situation where you don't know exactly what version of the library is being referenced (pypi vs. github vs. local). if e.g. you\r\n\r\n pip install granary\r\n\r\nthen\r\n\r\n pip install -e git+https://github.com/snarfed/granary#egg=granary\r\n\r\nI believe you will have the pypi version in lib and the git version in src, so locally the git version takes precedence, but once deployed only the pypi version is visible. What I ended up doing was installing all three libraries (oauth-dropins, granary, and webmention-tools) from github without the \"-e\" switch, and that worked.\r\n\r\nThere's also a small issue that if oauth_dropins.webutil tests run before oauth_dropins tests, webutil can't import mox"},"comment":{"url":"https://api.github.com/repos/snarfed/bridgy/issues/comments/122973637","html_url":"https://github.com/snarfed/bridgy/issues/427#issuecomment-122973637","issue_url":"https://api.github.com/repos/snarfed/bridgy/issues/427","id":122973637,"user":{"login":"kylewm","id":950127,"avatar_url":"https://avatars.githubusercontent.com/u/950127?v=3","gravatar_id":"","url":"https://api.github.com/users/kylewm","html_url":"https://github.com/kylewm","followers_url":"https://api.github.com/users/kylewm/followers","following_url":"https://api.github.com/users/kylewm/following{/other_user}","gists_url":"https://api.github.com/users/kylewm/gists{/gist_id}","starred_url":"https://api.github.com/users/kylewm/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kylewm/subscriptions","organizations_url":"https://api.github.com/users/kylewm/orgs","repos_url":"https://api.github.com/users/kylewm/repos","events_url":"https://api.github.com/users/kylewm/events{/privacy}","received_events_url":"https://api.github.com/users/kylewm/received_events","type":"User","site_admin":false},"created_at":"2015-07-20T18:20:19Z","updated_at":"2015-07-20T18:20:19Z","body":":+1: "}}