Virtual Environments ----------------------------------- Developing in a Virtual Environment ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ We recommend that you develop your custom plugins inside a virtual environment. This creates an isolated development environment that minimizes the risk of creating a package that Alteryx Designer and other users won't be able to use. It does this by keeping the dependencies required by different projects separate. Workspace Setup ~~~~~~~~~~~~~~~ Make sure to create a new virtual environment with Python version 3.8 before you initialize your SDK workspace. With Conda, the command is ``conda create --name ``. 3rd-party Packages ~~~~~~~~~~~~~~~~~~~~ During development, if you need 3rd-party dependencies for your custom plugin, make sure to add these requirements to the ``requirements-thirdparty.txt`` file. You should add any locally-created packages that become dependencies to the ``requirements-local.txt`` file. Best Practices ~~~~~~~~~~~~~~ Your virtual environment should only include libraries that help you develop the plugin. Make sure to remove libraries that were installed but not used. This ensures a clean list of dependencies for installs on end-user systems. List any packages that are explicitly imported or required by the plugin in ``requirements-thirdparty.txt``. In general, anytime you use ``pip install`` to add a dependency to your plugin, you should update the ``requirements-thirdparty.txt`` file. To automatically generate a requirements file for all packages that are part of the current virtual environment, use the ``pip freeze > list-of-requirements.txt`` command. You will need to prune this file to remove any dependencies that aren't explicitly imported or required by your plugin. Do this before you copy/overwrite the contents to the ``requirements-thirdparty.txt`` file that is created as part of the workspace initialization. The file exists under ``/backend/requirements-thirdparty.txt``.