Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

A new script which creates Python 3.3 venvs with Distribute and pip installed in them

68 views
Skip to first unread message

Vinay Sajip

unread,
Jan 30, 2013, 3:09:01 PM1/30/13
to pytho...@python.org, distut...@python.org
Python 3.3 includes a script, pyvenv, which is used to create virtual environments. However, Distribute and pip are not installed in such environments - because, though they are popular, they are third-party packages - not part of Python.

The Python 3.3 venv machinery allows customisation of virtual environments fairly readily. To demonstrate how to do this, and to provide at the same time a script which might be useful to people, I've created a script, pyvenvex.py, at

https://gist.github.com/4673395

which extends the pyvenv script to not only create virtual environments, but to also install Distribute and pip into them. The script needs Python 3.3, and one way to use it is:

1. Download the script to a directory in your path, and (on Posix platforms) make it executable.
2. Add a shebang line at the top of your script, pointing to your Python 3.3 interpreter (Posix, and also Windows if you have the PEP 397 launcher which is part of Python 3.3 on Windows).
3. Run the pyvenvex script to create your virtual environments, in place of pyvenv, when you want Distribute and pip to be installed for you (this is how virtualenv sets up environments it creates). You can run the script with -h to see the command line options available, which are a superset of the pyvenv script.

Regards,

Vinay Sajip

Ian Kelly

unread,
Jan 30, 2013, 3:42:09 PM1/30/13
to Python
I have a shell script for this:

#!/bin/sh
python3 -m venv $1
cd $1
. bin/activate
wget http://python-distribute.org/distribute_setup.py
python distribute_setup.py
bin/easy_install pip

Vinay Sajip

unread,
Jan 30, 2013, 5:18:50 PM1/30/13
to pytho...@python.org
Ian Kelly <ian.g.kelly <at> gmail.com> writes:

>
> I have a shell script for this:
>

Sure - there's a similar one at

https://gist.github.com/4591655

The main purpose of the script was to illustrate how to subclass venv.EnvBuilder,
and I've added it as an example to the 3.3 and in-development documentation:

http://docs.python.org/3/library/venv.html#an-example-of-extending-envbuilder

Doing it in Python means that it runs cross-platform, offers a few benefits
such as command line help, or the option to install Distribute but not pip.

Regards,

Vinay Sajip

Philippe Ombredanne

unread,
Jan 31, 2013, 4:05:17 AM1/31/13
to Vinay Sajip, pytho...@python.org, distut...@python.org
On Wed, Jan 30, 2013 at 9:09 PM, Vinay Sajip <vinay...@yahoo.co.uk> wrote:
> Python 3.3 includes a script, pyvenv, which is used to create virtual environments.
> However, Distribute and pip are not installed in such environments - because,
> though they are popular, they are third-party packages - not part of Python.
> The Python 3.3 venv machinery allows customisation of virtual environments
> fairly readily. To demonstrate how to do this, and to provide at the same time
> a script which might be useful to people, I've created a script, pyvenvex.py, at
> https://gist.github.com/4673395
> which extends the pyvenv script to not only create virtual environments, but to also install Distribute and pip into them.

Excellent and one step closer to sane package management ....
I wonder if you could not source instead the code that is directly in
the virtualenv.py scripts? it also includes the packed distribute and
pip ....
Meaning that would allow the installation entirely offline (with the
--never-download venv flag)

And btw, why pip is not part of the standard Python? This is nowadays
officially recommended on Pypi as the tool to use to install
package....
Per http://pypi.python.org/pypi
"Get Packages: To use a package from this index either "pip install
package" (get pip) or download, unpack and "python setup.py install"
it."

This does not make sense to me: I know about some of the controversies
.... but this is rather inconsistent to recommend using a tool and
not supporting it directly.

--
Philippe Ombredanne

+1 650 799 0949 | pombr...@nexB.com
DejaCode Enterprise at http://www.dejacode.com
nexB Inc. at http://www.nexb.com
0 new messages