{ "info": { "author": "Trevor Joynson", "author_email": "github@skywww.net", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Intended Audience :: Developers", "Intended Audience :: Information Technology", "License :: OSI Approved :: GNU General Public License (GPL)", "Operating System :: OS Independent", "Programming Language :: Python", "Topic :: Software Development", "Topic :: Software Development :: Libraries" ], "description": "tensorflow-auto-detect\n=============================\n\nSolves the absolute mess that is installing `tensorflow` from your package requirements.\n\nJust put it in your setuptools requirements and it'll install the GPU version of tensorflow if you have a CUDA\navailable; otherwise it will fallback to the CPU version.\n\n|ci-badge| |coverage-badge|\n\n- PyPi: https://pypi.python.org/pypi/tensorflow-auto-detect\n- Docs: All you need is right on this page.\n\n\nThe problem\n-----------\n\nBackground: Tensorflow provides two pypi packages: `tensorflow` and `tensorflow-gpu`.\nI'm sure you can infer which is compiled for which.\n\nLet's say you're making a product or have a project:\n\n- It uses Tensorflow.\n\n- It will run on a myriad of classes of machines, and therefore needs to be able to operate and install on machines that may or may not have CUDA available.\n\n- You want to optimistically utilize a GPU if you can, but fallback to using just CPU.\n\n- You want your package to be easily installable. Every time. Not just for half of your userbase.\n\n- You don't want to have toss the problem on your users and fellow engineers.\n\nLet's be honest, your stringently detailed absoute step-by-step microbe resistant instructions could.. *maybe..*\n*possibly..* not be followed and/or remembered exactly to a tee. You know, like everything else. Tech is hard.\n\n**Q:** How do you add the proper one to your own package as a requirement when they both install to the same package namespace?\n\n**A:** Well, you can't. \ud83d\udd76\n\nOh, and by the way, if you install one after the other, say to fix if you installed the wrong one at first,\nI'll just blindly trample over the first's files instead of doing anything useful. (Note: this is not Tensorflow's fault here, but a more widespread problem in pyland)\n\nYou can try to choke it down with sweet hacks like:\n\n- Adding each in their own `extras_require` blocks\n (ruining your default and therefore path of least resistance)\n\n- Toss the problem onto the user. You're *that guy* now.\n\n\nHow does it work?\n-----------------\n\nThis package includes a list of all libraries required by each version of tensorflow in `tfdetect/cuda.py`.\n\nCurrently, only the check for the cuda runtime library is active (by design) to be a bit more forgiving and allowing for\n\"strange\" setups, even though I've yet to come across one. This is the finest heuristic for this anyway, so it works out\nnicely, even in the face of your sweet sweet custom compiles; not to mention ensuring optional dependencies stay that way.\n\nVersions beneath `1.7` have not been tested, so the CUDA versions are likely to be mismatched. Was too far in the past\nto care, I'm sorry.\n\nUsage\n-----\n\nIn `requirements.txt` or `install_requires`:\n\n.. code:: sh\n\n tensorflow-auto-detect==1.10.0 # or any other release, 1to1 mapping to tf releases\n\nAs `pip` argument:\n\n.. code:: sh\n\n pip install tensorflow-auto-detect==1.8.1 # or any other release, 1to1 mapping to tf releases\n\n\nRunning tests\n-------------\n\n.. code:: sh\n\n pip install '.[tests]'\n pytest\n\n\n.. |ci-badge| image:: https://circleci.com/gh/akatrevorjay/tensorflow-auto-detect.svg?style=svg\n :target: https://circleci.com/gh/akatrevorjay/tensorflow-auto-detect\n.. |coverage-badge| image:: https://coveralls.io/repos/akatrevorjay/tensorflow-auto-detect/badge.svg?branch=develop&service=github\n :target: https://coveralls.io/github/akatrevorjay/tensorflow-auto-detect?branch=develop\n\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "", "keywords": "tensorflow", "license": "GPL", "maintainer": "", "maintainer_email": "", "name": "tensorflow-auto-detect", "package_url": "https://pypi.org/project/tensorflow-auto-detect/", "platform": "", "project_url": "https://pypi.org/project/tensorflow-auto-detect/", "project_urls": null, "release_url": "https://pypi.org/project/tensorflow-auto-detect/1.11.0/", "requires_dist": null, "requires_python": "", "summary": "Automatically install CPU or GPU tensorflow determined by looking for a CUDA installation.", "version": "1.11.0" }, "last_serial": 4587690, "releases": { "1.10.0": [ { "comment_text": "", "digests": { "md5": "ceebba9c338566c3ecfdfeb8d2b939fc", "sha256": "7d82b70a5f61ee79928fbc0226e8a161440734034728d74ec2027a295cac4e72" }, "downloads": -1, "filename": "tensorflow-auto-detect-1.10.0.tar.gz", "has_sig": false, "md5_digest": "ceebba9c338566c3ecfdfeb8d2b939fc", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5845, "upload_time": "2018-08-30T21:49:14", "url": "https://files.pythonhosted.org/packages/5e/7a/767d6c219b918a22f9a0a73b0a4a966d5bd4b82f22d19571073f79d8fece/tensorflow-auto-detect-1.10.0.tar.gz" } ], "1.10.0rc2": [ { "comment_text": "", "digests": { "md5": "fe205bb854c71aba876a46e96f6134d1", "sha256": "0c10fc7b616157f50d08a6a5ed6bab4504f0ca8b755fff5614dc56c3d38e9cab" }, "downloads": -1, "filename": "tensorflow-auto-detect-1.10.0rc2.tar.gz", "has_sig": false, "md5_digest": "fe205bb854c71aba876a46e96f6134d1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5873, "upload_time": "2018-08-30T21:49:17", "url": "https://files.pythonhosted.org/packages/a0/ec/b4a9563d37910d86fc5dd50f6967d839cf5789694f354a165a20df694687/tensorflow-auto-detect-1.10.0rc2.tar.gz" } ], "1.10.1": [ { "comment_text": "", "digests": { "md5": "fa1933c7704adaf5951661d3c354d3be", "sha256": "91f58ee70f1016d92154d6677546fb40ab2c0fbac1e410342f21528e759d8f28" }, "downloads": -1, "filename": "tensorflow_auto_detect-1.10.1-py3-none-any.whl", "has_sig": false, "md5_digest": "fa1933c7704adaf5951661d3c354d3be", "packagetype": "bdist_wheel", "python_version": "3.6", "requires_python": null, "size": 6609, "upload_time": "2018-09-29T10:39:12", "url": "https://files.pythonhosted.org/packages/03/1a/1bd81f58f3911468a8e3190bffc75bbbbcb0eaaf0bb3dbb803d33e6dfc7a/tensorflow_auto_detect-1.10.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f086eb08db42201c716817b4c5f314d8", "sha256": "34838d924fec5dfc02e30ff1414ef481ffc298f8ab00db3820f81f945c265cef" }, "downloads": -1, "filename": "tensorflow-auto-detect-1.10.1.tar.gz", "has_sig": false, "md5_digest": "f086eb08db42201c716817b4c5f314d8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7132, "upload_time": "2018-09-29T10:39:10", "url": "https://files.pythonhosted.org/packages/f4/89/7e12e538f347ed1024ecff6d31330a587b2a270e33990d6651218c71e02e/tensorflow-auto-detect-1.10.1.tar.gz" } ], "1.11.0": [ { "comment_text": "", "digests": { "md5": "5c3932456641dbbfc0cf5e7ea7bacb51", "sha256": "8e6c6e2e3342192faccc05e152af858f335f6c6d2eafccb899fdfa433034003f" }, "downloads": -1, "filename": "tensorflow-auto-detect-1.11.0.tar.gz", "has_sig": false, "md5_digest": "5c3932456641dbbfc0cf5e7ea7bacb51", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7869, "upload_time": "2018-12-11T22:52:30", "url": "https://files.pythonhosted.org/packages/2c/44/136c8f2ab04dd771c116f198bf19c63d02622123f50e1ae1803bf03a4066/tensorflow-auto-detect-1.11.0.tar.gz" } ], "1.6.0": [ { "comment_text": "", "digests": { "md5": "f5cd84e5a494d46e42a9028f06280ce1", "sha256": "734e0c02e8702431f744c1f6cdfd2c96768c571d1e46432a34d44152bc748bb0" }, "downloads": -1, "filename": "tensorflow-auto-detect-1.6.0.tar.gz", "has_sig": false, "md5_digest": "f5cd84e5a494d46e42a9028f06280ce1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5862, "upload_time": "2018-08-30T21:49:06", "url": "https://files.pythonhosted.org/packages/4e/b4/96efeee6d0ba41c101b466ad229b07ee8a0e8b05553ecb9b3aeb8870969f/tensorflow-auto-detect-1.6.0.tar.gz" } ], "1.7.0": [ { "comment_text": "", "digests": { "md5": "ee1ee3d8dd7b8fb4c1618749a3f89ddd", "sha256": "b41cbc3bc458399a99dde7f9d8eb8f623b84acbcf21b87d6c11a17ecf3242064" }, "downloads": -1, "filename": "tensorflow-auto-detect-1.7.0.tar.gz", "has_sig": false, "md5_digest": "ee1ee3d8dd7b8fb4c1618749a3f89ddd", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5882, "upload_time": "2018-08-30T21:49:08", "url": "https://files.pythonhosted.org/packages/7d/c2/efe2cd131377ea9f5c7fd196b0ba60e93247de5884ad4c288d335b2aad7d/tensorflow-auto-detect-1.7.0.tar.gz" } ], "1.7.1": [ { "comment_text": "", "digests": { "md5": "cda3bc27c50f475ef95f5da8357b6c10", "sha256": "195adbc766424e4cfb6f17801efb888fa32e4b3e75c8e36f0935213cae26f195" }, "downloads": -1, "filename": "tensorflow-auto-detect-1.7.1.tar.gz", "has_sig": false, "md5_digest": "cda3bc27c50f475ef95f5da8357b6c10", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5836, "upload_time": "2018-08-30T21:49:16", "url": "https://files.pythonhosted.org/packages/fe/98/eb51a7ff8fc25afe917f0a3493f129eec339195d15e38af04ffa2a390761/tensorflow-auto-detect-1.7.1.tar.gz" } ], "1.8.0": [ { "comment_text": "", "digests": { "md5": "3dfc8152a7959722afc7e354307f24be", "sha256": "ab5d376ea4635cd61336986e7f88e2e95bc0dd1fff4ce1a246bb49a8266cf8ea" }, "downloads": -1, "filename": "tensorflow-auto-detect-1.8.0.tar.gz", "has_sig": false, "md5_digest": "3dfc8152a7959722afc7e354307f24be", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5845, "upload_time": "2018-08-30T21:49:10", "url": "https://files.pythonhosted.org/packages/73/8b/b3866fafbc119059171a992af5211730fc8ffd799d1e4de4130c2a351588/tensorflow-auto-detect-1.8.0.tar.gz" } ], "1.9.0": [ { "comment_text": "", "digests": { "md5": "4eb9e8af8712fed845266e321f60dd4e", "sha256": "1a57e9a618dde95e6238d788d04f6bc81701a5c0e6373df29b4ea5b50d72aba7" }, "downloads": -1, "filename": "tensorflow-auto-detect-1.9.0.tar.gz", "has_sig": false, "md5_digest": "4eb9e8af8712fed845266e321f60dd4e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5867, "upload_time": "2018-08-30T21:49:12", "url": "https://files.pythonhosted.org/packages/c7/26/e5f70698f7a7737bb06288bc15c41c9398f4891b228a90efd752764dccf3/tensorflow-auto-detect-1.9.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "5c3932456641dbbfc0cf5e7ea7bacb51", "sha256": "8e6c6e2e3342192faccc05e152af858f335f6c6d2eafccb899fdfa433034003f" }, "downloads": -1, "filename": "tensorflow-auto-detect-1.11.0.tar.gz", "has_sig": false, "md5_digest": "5c3932456641dbbfc0cf5e7ea7bacb51", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7869, "upload_time": "2018-12-11T22:52:30", "url": "https://files.pythonhosted.org/packages/2c/44/136c8f2ab04dd771c116f198bf19c63d02622123f50e1ae1803bf03a4066/tensorflow-auto-detect-1.11.0.tar.gz" } ] }