Tutorial ======== .. note:: Did you find any of these instructions confusing? `Edit this file`_ and submit a pull request with your improvements! .. _`Edit this file`: https://github.com/go-choppy/choppy-cookiecutter-pypackage/blob/master/docs/tutorial.rst To start with, you will need a `GitHub account`_ and an account on `PyPI`_. Create these before you get started on this tutorial. If you are new to Git and GitHub, you should probably spend a few minutes on some of the tutorials at the top of the page at `GitHub Help`_. .. _`GitHub account`: https://github.com/ .. _`PyPI`: https://pypi.python.org/pypi .. _`GitHub Help`: https://help.github.com/ Step 1: Install Cookiecutter ---------------------------- First, you need to create and activate a virtualenv for the package project. Use your favorite method, or create a virtualenv for your new package like this: .. code-block:: bash virtualenv ~/.virtualenvs/mypackage Here, ``mypackage`` is the name of the package that you'll create. Activate your environment: .. code-block:: bash source bin/activate On Windows, activate it like this. You may find that using a Command Prompt window works better than gitbash. .. code-block:: powershell > \path\to\env\Scripts\activate Install cookiecutter: .. code-block:: bash pip install cookiecutter Step 2: Generate Your Package ----------------------------- Now it's time to generate your Python package. Use cookiecutter, pointing it at the cookiecutter-pypackage repo: .. code-block:: bash cookiecutter https://github.com/go-choppy/choppy-cookiecutter-pypackage.git You'll be asked to enter a bunch of values to set the package up. If you don't know what to enter, stick with the defaults. Step 3: Create a GitHub Repo ---------------------------- Go to your GitHub account and create a new repo named ``mypackage``, where ``mypackage`` matches the ``[project_slug]`` from your answers to running cookiecutter. This is so that Travis CI and pyup.io can find it when we get to Step 5. ``If your virtualenv folder is within your project folder, be sure to add the virtualenv folder name to your .gitignore file.`` You will find one folder named after the ``[project_slug]``. Move into this folder, and then setup git to use your GitHub repo and upload the code: .. code-block:: bash cd mypackage git init . git add . git commit -m "Initial skeleton." git remote add origin git@github.com:myusername/mypackage.git git push -u origin master Where ``myusername`` and ``mypackage`` are adjusted for your username and package name. You'll need a ssh key to push the repo. You can `Generate`_ a key or `Add`_ an existing one. .. _`Generate`: https://help.github.com/articles/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent/ .. _`Add`: https://help.github.com/articles/adding-a-new-ssh-key-to-your-github-account/ Step 4: Install Dev Requirements -------------------------------- You should still be in the folder containing the ``requirements.txt`` file. Your virtualenv should still be activated. If it isn't, activate it now. Install the new project's local development requirements: .. code-block:: bash pip install -r requirements.txt Step 5: Set Up ReadTheDocs -------------------------- `ReadTheDocs`_ hosts documentation for the open source community. Think of it as Continuous Documentation. Log into your account at `ReadTheDocs`_ . If you don't have one, create one and log into it. If you are not at your dashboard, choose the pull-down next to your username in the upper right, and select "My Projects". Choose the button to Import the repository and follow the directions. In your GitHub repo, select Settings > Webhooks & Services, turn on the ReadTheDocs service hook. Now your documentation will get rebuilt when you make documentation changes to your package. .. _`ReadTheDocs`: https://readthedocs.org/ Step 6: Set Up pyup.io ---------------------- `pyup.io`_ is a service that helps you to keep your requirements files up to date. It sends you automated pull requests whenever there's a new release for one of your dependencies. To use it, create a new account at `pyup.io`_ or log into your existing account. Click on the green ``Add Repo`` button in the top left corner and select the repo you created in Step 3. A popup will ask you whether you want to pin your dependencies. Click on ``Pin`` to add the repo. Once your repo is set up correctly, the pyup.io badge will show your current update status. .. _`pyup.io`: https://pyup.io/ Step 7: Release on PyPI ----------------------- The Python Package Index or `PyPI`_ is the official third-party software repository for the Python programming language. Python developers intend it to be a comprehensive catalog of all open source Python packages. When you are ready, release your package the standard Python way. See `PyPI Help`_ for more information about submitting a package. Here's a release checklist you can use: https://gist.github.com/audreyr/5990987 .. _`PyPI`: https://pypi.python.org/pypi .. _`PyPI Help`: http://peterdowns.com/posts/first-time-with-pypi.html Having problems? ---------------- Visit our :ref:`troubleshooting` page for help. If that doesn't help, go to our `Issues`_ page and create a new Issue. Be sure to give as much information as possible. .. _`Issues`: https://github.com/go-choppy/choppy-cookiecutter-pypackage/issues