[{"data":1,"prerenderedAt":369},["ShallowReactive",2],{"project-13461100":3},{"id":4,"name":5,"line":6,"line_source":7,"title":8,"url":9,"domain":10,"maker":11,"posted_at":12,"year":13,"points":14,"comments":15,"rank_in_year":16,"shown_in_year":17,"top":18,"tier":19,"category":20,"subcategory":21,"format":22,"keywords":23,"reception":27,"sentiment":28,"stance_mix":29,"scored_comments":32,"aspects":33,"strip":40,"post_text":41,"what":42,"said":76,"maker_in_thread":174,"shape":180,"grid":185,"attempts":331,"same_week":332,"maker_shows":38,"maker_hidden":361,"reader_version":362,"card":363},"13461100","Cage","Develop your Python applications easily in clean Docker environments","title","Show HN: Develop your Python applications easily in clean Docker environments","https:\u002F\u002Fgithub.com\u002Fmacostea\u002Fcage","github.com","macostea",1485165959,2017,119,58,361,2242,17,"notable","dev_tools","development environment","cli",[24,25,26,21],"python","docker","virtualenv","mixed",-0.241,{"positive":30,"neutral":31,"mixed":30,"critical":31},2,5,14,{"idea":34,"execution":36,"performance":39},{"positive":30,"critical":35},3,{"positive":37,"critical":38},0,1,{"positive":37,"critical":38},[38,35,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,31,37,38,38,31,37,35,35,37,38,38,37,37,37,37,37,37,37,35,37,37],null,{"problem":43,"audience":50,"pricing":41,"motivation":56,"time_to_build":41,"stack":60,"openness":73,"stage":74,"team_size":75},{"value":44,"source":45,"evidence":46},"Setting up clean isolated Python project environments","maker",[47],{"id":48,"by":11,"text":49},"13464435","Thanks for the feedback! I'll make sure to add the container removal and naming as new features. You can indeed run all the commands easily just with Docker. Cage aims to port…",{"value":51,"source":52,"evidence":53},"Python developers","inferred",[54],{"id":55},"post",{"value":57,"source":45,"evidence":58},"Port virtualenv functionality to Docker",[59],{"id":48,"by":11,"text":49},[61,69],{"value":62,"source":63,"evidence":64},"Python","commenter",[65],{"id":66,"by":67,"text":68},"13463828","rockostrich","Pretty simple to set up and use, but I'm not sure if it's better than learning `docker` and `docker-compose`. Also, the default `python \u003Cfile>.py` doesn't remove the container…",{"value":70,"source":63,"evidence":71},"Docker",[72],{"id":66,"by":67,"text":68},"open_source","prototype","unknown",{"praise":77,"objections":85,"requests":127,"questions":139,"alternatives":151},[78],{"value":79,"source":63,"evidence":80},"Clean containers useful in active dev cycle",[81],{"id":82,"by":83,"text":84},"13464968","crazyhatfish","Although I'm not sure I would use this, this is the kind of stuff I've been waiting for. Where nice clean containers are used as part of an active dev cycle rather than just the…",[86,101,112,120],{"value":87,"source":63,"evidence":88},"Docker is heavyweight compared to virtualenv",[89,93,97],{"id":90,"by":91,"text":92},"13466076","civodul","Docker sounds heavyweight for this purpose, given that it essentially spawns a complete userland separate from the host. I work on Guix; it provides a 'guix environment' command,…",{"id":94,"by":95,"text":96},"13465847","viraptor","So apart from having separate disk+network namespace, how is this different from a virtualenv? I feel like configurable sockets and paths should provide everything this can, but…",{"id":98,"by":99,"text":100},"13466107","cookiecaper","Less system resource overhead, more human overhead. VirtualEnvs can bleed over if they're not configured properly or if you forget to deactivate. They're harder to fully…",{"value":102,"source":63,"evidence":103},"Docker is slow on macOS",[104,108],{"id":105,"by":106,"text":107},"13465119","miloshadzic","Docker runs pretty slow on macOS so you'll be paying a pretty high price for cleanliness.",{"id":109,"by":110,"text":111},"13467619","andy_ppp","Yes, but the docker for mac uses 100% cpu per core if watching files. I think it's reasonable to assume using a better virtual machine (possibly including vmware and parallels,…",{"value":113,"source":63,"evidence":114},"Unclear what it adds over learning docker and docker-compose",[115,116],{"id":66,"by":67,"text":68},{"id":117,"by":118,"text":119},"13463868","gshulegaard","I was going to say something similar. With venv moved into the stdlib in Python3 and ongoing development and improvements to the `docker-compose` workflow I am not sure where a…",{"value":121,"source":63,"evidence":122},"Requires Python 3.5 not in Debian stable",[123],{"id":124,"by":125,"text":126},"13465426","alrs","Mac-first development strikes again: pycage requires Python 3.5, which hasn't landed in Debian stable yet. Bummer.",[128,132],{"value":129,"source":63,"evidence":130},"Add container removal and custom image naming",[131],{"id":66,"by":67,"text":68},{"value":133,"source":63,"evidence":134},"Support Pipfile dependencies",[135],{"id":136,"by":137,"text":138},"13464649","rch","> The current version of Cage only supports dependencies written in a requirements file It might be worth looking at pipfile. Great project though!",[140,144],{"value":141,"source":63,"evidence":142},"How does it differ from virtualenv",[143],{"id":94,"by":95,"text":96},{"value":145,"source":63,"evidence":146},"What is the use case",[147],{"id":148,"by":149,"text":150},"13465009","0wl3x","Could someone please explain why this might be useful? It seems like something that a crypto developer might like but if I'm developing something innocuous why would it matter if…",[152,156,163,167],{"value":153,"source":63,"evidence":154},"docker and docker-compose",[155],{"id":66,"by":67,"text":68},{"value":157,"source":63,"evidence":158},"Vagrant",[159],{"id":160,"by":161,"text":162},"13466379","nkantar","My two second-hand cents: At my previous company we used Vagrant for most projects, and it provided a nice abstraction layer that made things work reasonably well across all…",{"value":164,"source":63,"evidence":165},"Guix environment",[166],{"id":90,"by":91,"text":92},{"value":168,"source":63,"evidence":169},"pyenv",[170],{"id":171,"by":172,"text":173},"13465458","sandGorgon","can you not use pyenv?",{"comments":30,"answered":37,"key":175},[176,177],{"id":48,"text":49},{"id":178,"text":179},"13462902","Thanks for the suggestion! I'll try it out",{"commenters":181,"max_depth":182,"maker_replies":30,"first_comment_mins":183,"lifespan_hours":184},41,6,303,80,[186,188,190,192,196,197,201,204,206,209,211,214,217,220,222,225,228,231,233,236,239,242,244,246,248,250,252,254,256,258,261,262,266,270,273,276,278,279,282,283,286,289,292,295,296,298,301,304,306,309,312,314,317,320,322,324,327,329],[66,37,38,187,67,37],"project\u002Fcritical\u002Fidea",[117,37,35,189,118,37],"project\u002Fmixed\u002Fidea",[48,37,37,191,11,38],"maker\u002Fneutral\u002Fidea",[193,38,37,194,195,37],"13466132","other\u002Fneutral\u002Fnone","wtvanhest",[160,38,37,194,161,37],[198,38,37,199,200,37],"13466817","commenter\u002Fneutral\u002Fnone","tehwalrus",[202,38,37,199,203,37],"13466872","marcosscriven",[109,38,37,205,110,37],"commenter\u002Fneutral\u002Fperformance",[207,38,37,194,208,37],"13467020","throwawayish",[210,38,37,194,195,37],"13467501",[212,38,37,194,213,37],"13467723","toyg",[215,38,37,194,216,37],"13469201","theptip",[218,38,37,194,219,37],"13468650","michwill",[221,38,37,194,208,37],"13469938",[223,38,37,194,224,37],"13466391","AzMoo_",[226,38,37,194,227,37],"13466396","jdc",[229,38,37,194,230,37],"13466693","ylem",[232,38,37,194,208,37],"13466987",[234,38,37,194,235,37],"13468094","eugenekolo2",[237,38,37,194,238,37],"13468335","goodoldboys",[240,38,37,194,241,37],"13468377","my_ghola",[243,38,37,194,238,37],"13469589",[245,38,37,194,195,37],"13468440",[247,38,37,194,238,37],"13469594",[249,38,37,194,216,37],"13469193",[251,38,37,194,195,37],"13473541",[253,38,37,194,216,37],"13478477",[255,38,37,194,216,37],"13493637",[82,30,31,257,83,37],"project\u002Fpositive\u002Fidea",[259,30,37,194,260,37],"13466949","bschwindHN",[90,35,38,187,91,37],[263,264,38,187,265,37],"13466027",4,"symlinkk",[267,264,35,268,269,37],"13466705","project\u002Fneutral\u002Fidea","t0mbstone",[271,264,31,257,272,37],"13468841","Spivak",[274,31,37,194,275,37],"13462646","brudgers",[178,31,37,277,11,38],"maker\u002Fneutral\u002Fnone",[94,182,35,268,95,37],[280,182,35,268,281,37],"13465954","scott113341",[98,182,35,268,99,37],[284,182,37,194,285,37],"13466979","falsedan",[136,287,35,288,137,37],7,"project\u002Fmixed\u002Fexecution",[105,290,38,291,106,37],8,"project\u002Fcritical\u002Fperformance",[124,293,38,294,125,37],9,"project\u002Fcritical\u002Fexecution",[171,293,37,199,172,37],[297,293,37,199,125,37],"13466251",[299,293,37,199,300,37],"13466537","_joel",[302,293,37,199,303,37],"13465481","dijit",[305,293,37,199,125,37],"13466292",[307,293,37,199,308,37],"13465508","oblio",[310,293,37,199,311,37],"13466125","vopi181",[313,293,37,199,125,37],"13466241",[315,293,37,199,316,37],"13465548","adamrt",[318,293,37,194,319,37],"13465568","artlogic",[321,293,37,194,213,37],"13467805",[148,323,35,268,149,37],10,[325,323,37,199,326,37],"13465128","apetresc",[328,323,37,199,300,37],"13466571",[330,323,37,199,149,37],"13484980",[],[333,338,343,347,351,356],{"id":334,"name":335,"points":336,"category":337},"13458561","DESTIGOGO",377,"consumer_social",{"id":339,"name":340,"points":341,"category":342},"13485501","Teleconsole",334,"infrastructure",{"id":344,"name":345,"points":346,"category":337},"13483865","Bitesnap",174,{"id":348,"name":349,"points":350,"category":20},"13450554","Krihelinator",142,{"id":352,"name":353,"points":354,"category":355},"13474943","h10",138,"ai",{"id":357,"name":358,"points":359,"category":360},"13474229","Datapie",126,"data",false,"v2",{"id":364,"name":5,"line":6,"ai":361,"cat":20,"year":13,"points":14,"comments":15,"rec":27,"s":365,"top":18,"kw":366,"maker":11,"domain":10,"tier":19,"attempts":37,"strip":367,"url":9,"mix":368,"praise":79,"objection":87,"sub":21},13461100,-0.24,[24,25,26,21],"1300000000000000000501150330110000000300",[30,31,30,31],1794036551908]