<div dir="ltr"><br><div class="gmail_extra"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div>git+<a href="https://url_to_the_repo.git#egg=name_of_package" target="_blank">https://url_to_the_repo.git#egg=name_of_package</a><br></div><div><br></div><div>why isn't that "wheel=name_of_package"</div></div></blockquote><div><br></div><div>the "egg" part here has nothing to do with eggs.  just a vestige of another time.<br>see  <a href="https://github.com/pypa/pip/issues/1265">https://github.com/pypa/pip/issues/1265</a> <br><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div>and will it work if setuptools was not used in the packages setup.py???</div></div></blockquote><div><br></div><div>yes, it would work.<br><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div>which I can now get with "pip --editable" or  does that give me setuptools develop mode anyway</div></div></blockquote><div><br></div><div>"-e" uses setuptools develop mode.<br> <br><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div>So question one: do I need to use setuptools.setup rather than plain old distutils.setup?</div></div></blockquote><div><br></div><div>the main reason for setuptools is for "install_requires", which is fundamental to pip dependency resolution.<br></div><div>but in general, it offers more features and it's more maintained than pure distutils.<br></div><div>The standard advice is to use setuptools over distutils. <br></div><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div>I generally like the pip requirements.txt approach. It's up to the installation tool, not the packaging tool to mange requirements. But then again, it does make sense to declare the requirements in setup.py. But the issue at hand is that install_requires is doing some odd things with conda:</div></div></blockquote><div><br></div><div>The Packaging User Guide has a breakdown of install_requires vs requirements files.<br><a href="https://packaging.python.org/en/latest/technical.html#install-requires-vs-requirements-files">https://packaging.python.org/en/latest/technical.html#install-requires-vs-requirements-files</a><br><br></div><div>In brief, requirements files are usually for a whole "environment", whereas install_requires is for a project.<br></div><div><br></div><div>"install_requires" is critical when publishing projects to PyPI.  <br></div><div><br>Even if you're not publishing, install_requires is helpful to safely attempt an upgrade of your dependencies.<br></div><div>Instead of installing your app from a frozen requirements file, you would install normally in a clean environment (based on install_requires) and let any upgrades occur, and then you can re-freeze your requirements.<br><br></div><div>But if you are doing mostly vcs installs in your requirements file, then it's true that maintaining install_requires can be somewhat pointless, although I would still say it's helpful to keep track of each project's first level abstract dependencies are, even if the install_requires declarations aren't being used.<br></div><div><br></div><div>Marcus <br></div></div><br></div></div>