The command nltk.download() has the following signature:
>>> help(nltk.download)
Help on method download in module nltk.downloader:
download(info_or_id=None, download_dir=None, quiet=False, force=False, prefix='[nltk_data] ',
halt_on_error=True, raise_on_error=False)
So you can call it with the location of the nltk_data directory as the second argument (the first argument is the package to download, e.g. "book" or "reuters"). Alternately, in the source file nltk/downloader.py there's this information about commandline invocation, which you might find more convenient for scripting:
python nltk/downloader.py [-d DATADIR] [-q] [-f] [-k] PACKAGE_IDS
or::
python -m nltk.downloader [-d DATADIR] [-q] [-f] [-k] PACKAGE_IDS
DATADIR is the nltk_data directory to use. The source provides other ways to control the destination of downloaded files when calling from python, but I trust these will do you. If your goal is to patch the nltk so that invocations of `nltk.download()` by others also go to the virtualenv, I'd patch nltk.data.path or nltk.downloader.Downloader.default_download_dir().)
Alexis