Using Wing with virtualenv

Index of All Documentation » How-Tos » How-Tos for Containers »

Wing Pro Screenshot

Wing is a Python IDE that can be used to develop, test, and debug Python code running in virtualenv.

Two versions of Wing are appropriate for use with this document: Wing Pro is the full-featured Python IDE for professional developers, and Wing Personal is a free alternative with reduced feature set.

If you do not already have Wing installed, download it now.

This document describes how to configure Wing for virtualenv. To get started using Wing as your Python IDE, please refer to the tutorial in Wing's Help menu or read the Quickstart Guide.

Creating a New Virtualenv

If you are starting a new project from scratch and want to create a new virtualenv for the project, select New Project from the Project menu and use the Create New Virtualenv project type. You will need to enter the following values:

Name is the name for your virtualenv directory.

Packages lets you specify packages to install into the new virtualenv. This is either a space-separated list of pip package specifications, or a file that contains one package specification per line. In either case, the package specifications may be anything accepted by pip, such as a package name, package==version, and package>=version.

Python Executable selects the base Python installation to use. In Python 2, you must install virtualenv into the selected Python first, if it's not already present.

Parent Directory is the directory where the virtualenv directory will be created.

Upgrade pip selects whether Wing should upgrade pip in the virtualenv before installing any packages, to compensate for the fact that virtualenv installs an old version of pip even if the base Python installation has a newer one.

Inherit global site-packages controls whether to use the --system-site-packages option when running virtualenv. When checked, the virtualenv will be able to use packages installed into the base Python installation. Otherwise, it will be completely isolated from the base install, other than its use of Python's standard libraries.

Auto-save project controls whether Wing automatically saves its project file to the virtualenv directory. When checked, the project is named using the Name entered above plus .wpr and is stored in the top level of the virtualenv directory. In Wing Pro, which separates sharable project data from user-specific data, a second file ending in .wpu will also be written.

After submitting the New Project dialog, Wing will create the virtualenv, set the Python Executable in Project Properties to the command that activates the environment, and add the virtualenv directory to the project.

Now source analysis, executing, debugging, and testing in Wing will use the new virtualenv, as long as the project you just created is open. You will need to restart the Python Shell tool in Wing before it uses the newly created virtualenv.

Working on a Remote Host

Wing Pro can also create a new virtualenv on a remote host. This is done the same way as described above, except you will choose Remote for Python Executable and then select or create a remote host configuration. The Python used for creating and running the virtualenv on the remote host is the one chosen in the remote host configuration's Python Executable, which in this case should either be set to Use Default or Command Line to select the base Python installation to use.

When working with a remote host, the Auto-save Project option will be disabled and you will need to manually save your project after it is created. In most cases, it's best to store your project file locally and not on the remote host. If you do want to store the project on the remote host, you will need to mark your remote host configuration as shared in the remote host configuration management dialog, which can be accessed from Remote Hosts in the Project menu or with the Manage button under Python Executable in the New Project dialog. This is needed so remote host configuration is stored locally, while the project will be stored on the remote host.

Using an Existing Virtualenv

To use an existing virtualenv with Wing, simply set the Python Executable in Wing's Project Properties to Activated Env and enter the command that activates the environment. Wing uses this to determine the environment to use for source analysis and to execute, test, and debug your code. In this case, Wing starts Python by running python in that environment.

Python Executable can also be set to Command Line to enter the full path to the virtualenv's python.exe or python. The easiest way to find the correct value to set is to launch your virtualenv Python outside of Wing and execute the following:

import sys

Activating the Virtualenv

If you followed the above instructions, Wing will automatically activate the virtualenv while you're using your project.

An alternative approach is to leave Python Executable unset and instead activate the virtualenv on the command line and then start Wing from the command line so that it inherits the virtual environment. However, this is not recommended because the inherited environment may conflict with virtual environments used by other projects.

Using Virtualenv with Anaconda

Anaconda implements its own named environments, created by conda create but it is also possible to use virtualenv with Anaconda. This works in the same way, except that on Windows Wing will automatically call conda activate base before it sets up your virtualenv. This is needed to avoid failure to import some modules as a result of missing environment. See About Anaconda Environments in the Anaconda How-To for details.

Related Documents

For more information see: