[{"data":1,"prerenderedAt":240},["ShallowReactive",2],{"project-11328111":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":29,"sentiment":30,"stance_mix":31,"scored_comments":36,"aspects":37,"strip":41,"post_text":42,"what":43,"said":75,"maker_in_thread":147,"shape":156,"grid":160,"attempts":204,"same_week":205,"maker_shows":39,"maker_hidden":232,"reader_version":233,"card":234},"11328111","requirements","Python requirements for Humans","title","Show HN: Python requirements for Humans","https:\u002F\u002Fgithub.com\u002Fsocketubs\u002Frequirements","github.com","Socketubs",1458569195,2016,78,19,494,2264,22,"notable","dev_tools","python packaging","library",[24,25,26,27,28],"python","setup.py","requirements.txt","pip","dependencies","roasted",-0.407,{"positive":32,"neutral":33,"mixed":34,"critical":35},0,2,1,4,7,{"idea":38,"docs":40},{"positive":32,"critical":39},3,{"positive":32,"critical":34},[34,32,32,32,32,34,32,39,32,32,32,32,39,32,34,32,39,34,32],null,{"problem":44,"audience":55,"pricing":42,"motivation":60,"time_to_build":42,"stack":65,"openness":72,"stage":73,"team_size":74},{"value":45,"source":46,"evidence":47},"Maintaining dependencies twice in setup.py and requirements.txt","maker",[48,52],{"id":49,"by":50,"text":51},"11329870","mpdehaan2","Ironically, the package to make your package requirements easier to write has additional requirements not in the core distribution :) But more seriously, good idea in thinking…",{"id":53,"by":11,"text":54},"11330221","Thank you for your feeback. Same reasons that encourage me to build `requirements` :) I know this isn't perfect for now, `requirements` could evolve!",{"value":56,"source":57,"evidence":58},"Python developers","inferred",[59],{"id":49,"by":50,"text":51},{"value":61,"source":46,"evidence":62},"Dependency lists are duplicated between setup.py and requirements.txt",[63,64],{"id":49,"by":50,"text":51},{"id":53,"by":11,"text":54},[66],{"value":67,"source":57,"evidence":68},"Python",[69],{"id":70,"by":11,"text":71},"11330162","Like I say in README[0], you have to put `requirements.py` beside your `setup.py` [0]: https:\u002F\u002Fgithub.com\u002Fsocketubs\u002Frequirements#usage","open_source","prototype","unknown",{"praise":76,"objections":82,"requests":109,"questions":120,"alternatives":128},[77],{"value":78,"source":79,"evidence":80},"Good idea that Python should already work this way","commenter",[81],{"id":49,"by":50,"text":51},[83,94,98,102],{"value":84,"source":79,"evidence":85},"setup.py and requirements.txt serve different purposes",[86,90],{"id":87,"by":88,"text":89},"11329123","JulianWasTaken","This is a nice idea in theory, but setup.py and requirements.txt are not the same, and you cannot particularly generate one from the other:…",{"id":91,"by":92,"text":93},"11332503","guitarbill","Python dependency management is a hard problem, but better than most languages [citation needed]. And `pip` and `setup.py` have emerged over several years, with several…",{"value":95,"source":79,"evidence":96},"Does not support pip options like --no-index and --find-links",[97],{"id":91,"by":92,"text":93},{"value":99,"source":79,"evidence":100},"Bad tagline riffing on requests",[101],{"id":91,"by":92,"text":93},{"value":103,"source":79,"evidence":104},"Missing license file and copyright holder",[105],{"id":106,"by":107,"text":108},"11331153","reidrac","I see a problem with that \"License is MIT\". That's not how software is licensed and if the author wants this to be used, the legal part must be flawless. Who's the copyright…",[110,116],{"value":111,"source":79,"evidence":112},"Support setup_requires so no copy of requirements.py is needed in the repo",[113],{"id":114,"by":92,"text":115},"11335253","That's fair. If you could get installation via `setup_requires` to work, so people don't need a (soon to be out-of-date) copy of `requirements.py` in their repo, that'd be a win…",{"value":117,"source":79,"evidence":118},"Look at pbr",[119],{"id":91,"by":92,"text":93},[121],{"value":122,"source":79,"evidence":123},"How to install a package that depends on this before its dependencies exist",[124],{"id":125,"by":126,"text":127},"11329779","haldean","How would you install a package that depended on this? You can't install it's dependencies automatically until you've got one of the dependencies installed.",[129,136,140],{"value":130,"source":79,"evidence":131},"pip-tools",[132],{"id":133,"by":134,"text":135},"11332475","TheCowboy","Another way to do this, that you or someone may be interested in, is by using pip-tools. You write a requirements.in text file where you list libraries by just their name, and…",{"value":137,"source":79,"evidence":138},"pbr",[139],{"id":91,"by":92,"text":93},{"value":141,"source":79,"evidence":142},"Bundler\u002FGemfile and project.clj",[143],{"id":144,"by":145,"text":146},"11330286","whalesalad","I wish the Python community would adopt a Bundler\u002FGemfile style. The project.clj concept is also a fantastic approach. Environments should just be maps of data that you can…",{"comments":35,"answered":39,"key":148},[149,152,153],{"id":150,"text":151},"11332774","Thank you! I definitely need to have a look at `pdr`, it looks very interesting. `requirements.py` doesn't stand to be \"the\" universal solution to Python dependency problem. It's…",{"id":53,"text":54},{"id":154,"text":155},"11331285","I'll add license file in repository. Thank you.",{"commenters":157,"max_depth":35,"maker_replies":35,"first_comment_mins":158,"lifespan_hours":159},13,131,25,[161,163,167,171,174,176,177,179,181,185,188,190,192,194,196,198,200,201,203],[87,32,34,162,88,32],"project\u002Fcritical\u002Fidea",[164,32,32,165,166,32],"11329543","commenter\u002Fneutral\u002Fidea","yeukhon",[168,32,32,169,170,32],"11329956","commenter\u002Fneutral\u002Fnone","pietroalbini",[172,32,32,165,173,32],"11332276","thristian",[133,32,32,175,134,32],"other\u002Fneutral\u002Fidea",[91,34,34,162,92,32],[150,34,32,178,11,34],"maker\u002Fneutral\u002Fidea",[114,34,39,180,92,32],"project\u002Fneutral\u002Fidea",[182,34,32,183,184,32],"11333184","other\u002Fneutral\u002Fnone","taion",[186,34,32,183,187,32],"11333857","bye_amzn",[189,34,32,183,92,32],"11335245",[191,34,32,183,184,32],"11337076",[49,33,39,193,50,32],"project\u002Fmixed\u002Fidea",[53,33,32,195,11,34],"maker\u002Fneutral\u002Fnone",[106,39,34,197,107,32],"project\u002Fcritical\u002Fdocs",[154,39,32,199,11,34],"maker\u002Fneutral\u002Fdocs",[144,35,39,180,145,32],[125,202,34,162,126,32],5,[70,202,32,199,11,34],[],[206,211,215,220,224,228],{"id":207,"name":208,"points":209,"category":210},"11317811","Honest Salary",314,"web_saas",{"id":212,"name":213,"points":214,"category":20},"11324166","Localkube",173,{"id":216,"name":217,"points":218,"category":219},"11334764","Quantum",151,"languages",{"id":221,"name":222,"points":223,"category":219},"11310485","English syntax highlighter",147,{"id":225,"name":226,"points":227,"category":20},"11327679","Micro",101,{"id":229,"name":230,"points":231,"category":219},"11321164","Rhine",81,false,"v2",{"id":235,"name":5,"line":6,"ai":232,"cat":20,"year":13,"points":14,"comments":15,"rec":29,"s":236,"top":18,"kw":237,"maker":11,"domain":10,"tier":19,"attempts":32,"strip":238,"url":9,"mix":239,"praise":78,"objection":84,"sub":21},11328111,-0.41,[24,25,26,27,28],"1000010300003010310",[32,33,34,35],1793990940435]