{ "info": { "author": "Aleksandar Janicijevic", "author_email": "aleks@vogonsoft.com", "bugtrack_url": null, "classifiers": [ "License :: OSI Approved :: Apache Software License", "Operating System :: POSIX :: Linux", "Programming Language :: Python :: 2.7" ], "description": "# pypakr\n\nPython containers for virtualenv\n\nThis Python project implements simple containers in the sense similar to\nDocker: you can generate an image file that contains complete information\nneeded to create a virtual environment on any system that has pypakr\ninstalled. NOTE: don't confuse this with the other meaning of the term\ncontainer, which is \"a holder object that stores a collection of other\nobjects (its elements).\" [http://www.cplusplus.com/reference/stl/]\n\n## Introduction\n\nJust like Docker can run isolated environments, called containers,\nPython has virtualenv. This tool creates isolated Python\nenvironments. But it misses what Docker has, which is a way to have a file\nthat somehow defines the environment and that can be used to create a\nvirtual environment on any machine that has Docker installed.\n\nIn Docker, containers are created from \"images\" that specify their precise\ncontents (source: Wikipedia). We need something like that for Python.\n\npypakr fulfills that need. It can take a description of which Python\npackages need to be installed and use it to generate an image file that\ndescribes what is installed in a virtual environment. Then it can take that\nimage and generate a directory that contains a complete virtual environment.\n\nThis can be done with Docker too. The advantage of pypakr is that the images\nare much smaller - they contain only Python files that can be overlaid\non top of a generic virtual environment to produce a \"container\" that can\nrun a Python application or microservice. Containers are also smaller than\na typical Docker container, because they only contain a virtualenv-style\nenvironment.\n\n## Dependencies\n\npypakr currently runs on Linux, and other than Python, it depends on the\nfollowing software:\n\n- virtualenv\n- vex, for running code in a virtual environment from a script\n- unionfs-fuse, for mounting UnionFS volumes\n\nInstall these tools like this:\n\n pip install virtualenv\n pip install vex\n\nOn Ubuntu, install unionfs-fuse like this:\n\n sudo apt-get install unionfs-fuse\n\n## Testing\n\npypakr can be tested before installing by running\n\n tox\n\nor after installing by running\n\n pytest\n\n## Installation\n\nRun\n\n pip install pypakr\n\n## Initialization\n\nAfter you installed pypakr, run command\n\n pypakr init\n\nIt will create configuration file .pypakr in your home directory and\nalso create a base virtual environment in directory\n\n $HOME/pypakr/BASE\n\nBy default, if .pypakr does not exist before you run pypakr init, it\nwill be created to look like this:\n\n```\n[Global]\nbase = /home/george/pypakr/BASE\n```\nwhere /home/george stands for your home directory.\n\nHowever, if you don't like this default, create .pypakr and set value of\nkey base to point to some other path. Then run pypakr init, and it will\ntry to create the base directory if it doesn't exist and then create\na virtual environment in it.\n\n# Help\n\nRun pypakr by itself on the command line to get help, or\n\n pypakr help\n\nIt will give you text like this:\n\n```\npypakr\nPython containers\nUsage:\npypakr \n - Commands:\n - init - initialize\n - create-image - create image\n - Arguments:\n -s, --src \n -i, --image \n - create-container - create container\n - Arguments:\n -i, --image \n -c, --container \n - run - run container (execute script in the\n container's virtual environment)\n - Arguments:\n -c, --container \n -r, --script \n\nConfiguration is in file ~/.pypakr\n[Global]\nbase = /home/george/pypakr/BASE\n```\n\nSee documentation in directory doc. As a quick reminder, here are the steps\nto create a container:\n\n1. Create source file CUSTOM.tar.\n\n2. Create image file IMAGE.tar:\n\n pypakr create-image -s CUSTOM.tar -i IMAGE.tar\n\n3. Create container CONT:\n\n pypakr create-container -i IMAGE.tar -c CONT\n\n4. Run script run in the container CONT:\n\n pypakr run -c CONT -r ./run\n\n# TODO\n\nThis project is still young and there is so much more that can be done.\nHere are some ideas:\n\n- Port to Windows. unionfs is a Linux thing; a Windows version of pypakr\nis possible, by generating a custom virtual environment and then extracting\nthe difference from the base virtual environment and tarring that to create\nan image.\n- A hub site like Docker Hub.\n- Serverless web application that uses pypakr containers as units of\nfunctionality.\n\n# Contributions\n\nAll comments, questions, issue reports, and pull requests are welcome!\n\n\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/ajanicij/pypakr", "keywords": "", "license": "", "maintainer": "", "maintainer_email": "", "name": "pypakr-pkg", "package_url": "https://pypi.org/project/pypakr-pkg/", "platform": "", "project_url": "https://pypi.org/project/pypakr-pkg/", "project_urls": { "Homepage": "https://github.com/ajanicij/pypakr" }, "release_url": "https://pypi.org/project/pypakr-pkg/0.0.4/", "requires_dist": [ "vex", "virtualenv (>=10.0.0)" ], "requires_python": "", "summary": "Python containers", "version": "0.0.4" }, "last_serial": 4446646, "releases": { "0.0.3": [ { "comment_text": "", "digests": { "md5": "12afb744ff2e33901ca157a598562814", "sha256": "3c0c04ccd220ee5003f81e974b85d92df7373eb157099d97232ba45fda8e46b6" }, "downloads": -1, "filename": "pypakr_pkg-0.0.3-py2-none-any.whl", "has_sig": false, "md5_digest": "12afb744ff2e33901ca157a598562814", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 9196, "upload_time": "2018-11-03T03:26:52", "url": "https://files.pythonhosted.org/packages/96/ee/93b35fd7d499ee82a61728504f6190d460cdcb08589390e253a21cbed0e2/pypakr_pkg-0.0.3-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "77428d1583d8a089ddb43cb3baa3167e", "sha256": "35af721709e80979916bbea3002293f1b85416553705ae26265420fda8d77211" }, "downloads": -1, "filename": "pypakr_pkg-0.0.3.tar.gz", "has_sig": false, "md5_digest": "77428d1583d8a089ddb43cb3baa3167e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10269, "upload_time": "2018-11-03T03:26:54", "url": "https://files.pythonhosted.org/packages/20/78/d47a0019221be1ae2fb29b59aacfa472ce3893f81a28a2b58251079ce6cf/pypakr_pkg-0.0.3.tar.gz" } ], "0.0.4": [ { "comment_text": "", "digests": { "md5": "037109c6f8f3d6d8d5cacbb8c650192b", "sha256": "f161d3873b6a17c906fcfab8b0b893320027dcdb39eb5ac0f4280ca8f5dfa56c" }, "downloads": -1, "filename": "pypakr_pkg-0.0.4-py2-none-any.whl", "has_sig": false, "md5_digest": "037109c6f8f3d6d8d5cacbb8c650192b", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 9208, "upload_time": "2018-11-03T03:35:21", "url": "https://files.pythonhosted.org/packages/11/f9/16146280f7bfc5abd491ea1ca2734604f72bf9b7366c96c913fe2aa9f72e/pypakr_pkg-0.0.4-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f49f20866f0b378f3a46fdb69089b7d1", "sha256": "0ad9d38d2979aedae5f8b756ce64d811d0c427eebfc56152c85abafbba4ab192" }, "downloads": -1, "filename": "pypakr_pkg-0.0.4.tar.gz", "has_sig": false, "md5_digest": "f49f20866f0b378f3a46fdb69089b7d1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10272, "upload_time": "2018-11-03T03:35:23", "url": "https://files.pythonhosted.org/packages/4d/d2/3eaecf6ce3b6c2aed853a3b3aaba50da2f1aac237bf8c96b8f6fcfa0335a/pypakr_pkg-0.0.4.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "037109c6f8f3d6d8d5cacbb8c650192b", "sha256": "f161d3873b6a17c906fcfab8b0b893320027dcdb39eb5ac0f4280ca8f5dfa56c" }, "downloads": -1, "filename": "pypakr_pkg-0.0.4-py2-none-any.whl", "has_sig": false, "md5_digest": "037109c6f8f3d6d8d5cacbb8c650192b", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 9208, "upload_time": "2018-11-03T03:35:21", "url": "https://files.pythonhosted.org/packages/11/f9/16146280f7bfc5abd491ea1ca2734604f72bf9b7366c96c913fe2aa9f72e/pypakr_pkg-0.0.4-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f49f20866f0b378f3a46fdb69089b7d1", "sha256": "0ad9d38d2979aedae5f8b756ce64d811d0c427eebfc56152c85abafbba4ab192" }, "downloads": -1, "filename": "pypakr_pkg-0.0.4.tar.gz", "has_sig": false, "md5_digest": "f49f20866f0b378f3a46fdb69089b7d1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10272, "upload_time": "2018-11-03T03:35:23", "url": "https://files.pythonhosted.org/packages/4d/d2/3eaecf6ce3b6c2aed853a3b3aaba50da2f1aac237bf8c96b8f6fcfa0335a/pypakr_pkg-0.0.4.tar.gz" } ] }