Explicit bootstrapping of pip in Python installations
python.org
python.org
Isn't the standard library the place where packages go to die?
Isn't the reason pip is actually useful because has a nice health release cycle (http://www.pip-installer.org/en/latest/news.html) and isn't frozen into the standard-library ice age of the past?
Won't this make it even harder to build a compliant version of python that runs on mobile devices where you can't install packages (>_> iOS)?
I get that it's convenient, I'm not 100% convinced its a good idea.
Edit: Reading the PEP in detail its now clear that this is not bundling pip with python (see 'Including pip directly in the standard library'). This is bundling a pip installer as part of the standard library. Much better.
I'm just not understanding how it's OK that a standard acceptance of a Python package really means that it should go to the graveyard.
To some extent this is intentional because anything that requires more frequent changes is probably not stable enough for inclusion in the stdlib, in practice it does cause some unintentional issues for example rather lacking timezone support.
However, a distributable version of pip will be included with each release so that ensurepip does not have to contact the PyPI servers during an install. And with each maintenance release of Python, this pre-included version will be updated to match the then-current pip release.
But, the bottom line is that pip still lives outside of the standard library. Python 3.4+ is just guaranteeing that you have a version installed.
Why wouldn't you be able to install packages? iOS stops you from making executable pages, but cpython runs bytecode anyway.
Nice reminder that pip is a dev tool and should be used as such. It makes sense to be included in Python.
pip should not be going anywhere near your site-packages, and it'd be great to be able to disable that ability.
(Edit: Not that I don't like virtualenv when it's appropriate, but it really bugs me the wrong way when people just throw out generalizations like that)
Huh, fair enough. I work on non-webapps too -- could you explain more about your use case?
i recommend it to everyone i work with, but it is significantly more useful when all your dependencies are pure python.
AFAIK the default virtualenv behaviour has been "create an environment and then automatically and immediately install pip from the internet", so for the last several years they've been practically tied together, even if they were distributed individually.
In that the following commands have also been required after running pyvenv-3.3, no, python has not "come with" pip:
(venv) $ wget http://python-distribute.org/distribute_setup.py
(venv) $ python distribute_setup.py
(venv) $ easy_install pip
I believe it has been possible to configure pyvenv to do this automatically, but I've never done that. pip install virtualenv
mkdir ~/.virtualenvs
virtualenv ~/.virtualenvs/my_new_project
Activate it to continue development: . ~/.virtualenvs/my_new_project/bin/activate
The effect of this is that `python` and `pip` commands now only act on the virtualenv and not system (or user) site wide.Deactivate it:
deactivate
Python and pip commands are now the system versions again.About time really.
I almost always use pip and my own installed code (kinda homebrew like) to put dependencies onto a box. It takes more work but I can skip the bullshit.
Personally I'm not convinced that the Node.js callback hell is a good way to get high IO performance. The Golang way of doing it with normal, blocking libraries and Goroutine's seems ideal as it doesn't burden the programmer as much.
In 0.12, node will ship with a version of v8 which has generators (hidden under the --harmony flag), which are shallow coroutines, which allow for the same code style as go-routines.
Existing non-blocking libraries will be reusable with generators via e.g. https://github.com/jmar777/suspend or https://github.com/visionmedia/co etc.
Performance could also potentially improve as in V8 closures are much more expensive than generators.
easy_install can install from binary installers or eggs. I'd like to see that added to pip.
https://pypi.python.org/pypi/wheel
https://wheel.readthedocs.org/en/latest/index.html
https://bitbucket.org/dholth/wheel/
http://www.python.org/dev/peps/pep-0427/
i am using wheel (with pip) as a replacement for .exe installers to install some packages (numpy, scipy, py2exe, etc) on windows. i find it useful because you can automate the installation of a wheel archive using pip (with the typical .exe windows installers you need to click next several times...). the wheel command line utility also knows how to convert existing `.exe` installers to wheel archives.
What is involved in getting a wheel file to pypi so that `pip install lxml` happens out of the box in windows?
I expect we'll see python 3 overtake python 2 in new projects within 3 years. I realize that's still pretty far off, but these things take time. You have to give the PSF credit for great support of the 2.x series.
This sounds like a great step forward to me in making Python packages easy to create, install, and uninstall!
What do you expect me to use as an alternative? easy_install?
Next up: Local package installs.
You could pretty easily re-write your comment and say "Look at the trails Debian + apt have blazed. That's the right move."
http://dominictarr.com/post/25516279897/why-you-should-never...
http://dontkry.com/posts/code/modules-the-right-way.html
To be more specific, what npm does that pip, debian, and rubygems don't do is nested dependencies, which is a wonderful advancement.