On Thu, Jan 30, 2014 at 12:23 PM, Evgeny Sazhin <eug...@sazhin.us> wrote: > On Thu, Jan 30, 2014 at 11:48 AM, Donald Stufft <don...@stufft.io> wrote: >> >> On Jan 30, 2014, at 11:44 AM, Evgeny Sazhin <eug...@sazhin.us> wrote: >> >>> On Thu, Jan 30, 2014 at 9:38 AM, Donald Stufft <don...@stufft.io> wrote: >>>> >>>> On Jan 29, 2014, at 11:29 PM, Evgeny Sazhin <eug...@sazhin.us> wrote: >>>> >>>>> >>>>> On Jan 29, 2014, at 11:17 PM, Donald Stufft <don...@stufft.io> wrote: >>>>> >>>>>> >>>>>> On Jan 29, 2014, at 11:16 PM, Evgeny Sazhin <eug...@sazhin.us> wrote: >>>>>> >>>>>>> >>>>>>> On Jan 29, 2014, at 10:49 PM, Donald Stufft <don...@stufft.io> wrote: >>>>>>> >>>>>>>> >>>>>>>> On Jan 29, 2014, at 10:47 PM, Evgeny Sazhin <eug...@sazhin.us> wrote: >>>>>>>> >>>>>>>>>> >>>>>>>>>> Wheel is a package format. Packages are for transmitting and >>>>>>>>>> installing bits. If you want to make some kind of self-unpacking >>>>>>>>>> executable please do it with something built for it. makeself is an >>>>>>>>>> excellent choice for these. >>>>>>>>>> >>>>>>>>> >>>>>>>>> I didn't say anything about self-unpacking executable. Egg already >>>>>>>>> knows to do what is needed, so i was correct in expecting the wheel >>>>>>>>> to do the same. Plus the notion of packages for transmitting and >>>>>>>>> installing should not exclude the running and importing. Otherwise it >>>>>>>>> is useless, at least for my purposes. As discussed before - jar does >>>>>>>>> that just fine and it is a package format. >>>>>>>>> >>>>>>>>> Funny thing - wheel allows to do the same! Why would i want to use >>>>>>>>> anything else then??? >>>>>>>> >>>>>>>> Because Python is not Java and Wheels are not Jars. You'll find very >>>>>>>> few packages actually support being run from a zipped file and the >>>>>>>> failure modes are not always obvious. >>>>>>> >>>>>>> I understand that not a lot of currently existing project are using >>>>>>> this capability - but I'm 100% positive that if the running from wheel >>>>>>> would be properly supported on error handling level and officially >>>>>>> declared at least for the pure python - most of the people would be >>>>>>> happy to have that! If we think about that, why would i want to use >>>>>>> anything else other than wheel and pip if this pair gives the >>>>>>> possibility to >>>>>> >>>>>> Pip does not install zipped wheels, and while it's not entirely up to me >>>>>> I would be opposed to it getting the ability to do so. >>>>> >>>>> I might be poorly wording things - but i never said I want pip to install >>>>> the zipped wheel. It seems that you're missing the point a bit. >>>>> I'm totally fine with the way pip handles things. >>>>> >>>>> again briefly My idea is to use the following: >>>>> >>>>> central location - flat folder with wheels, accessible to read for >>>>> everybody in network. >>>>> >>>>> for development : pip and virtual env. project has the virtual env >>>>> created, dependencies are deployed and available for development and >>>>> debugging in a standard manner. When done the project is packaged into >>>>> wheel that is getting deployed to central location. >>>>> >>>>> To *run* the program: i would create a script that bases on the pip >>>>> ability to resolve dependencies and basing on the requirements.txt from >>>>> inside my wheel it would generate PYTHONPATH to prepend the starting call >>>>> like that: >>>>> PYTHONPATH=1.whl:2.whl; python 3.whl >>>>> >>>>> where 3.whl is program with __main__.py and 1.whl and 2.whl are >>>>> dependencies needed. This works as of now! >>>> >>>> Just use pip and virtualenv in production. It's bad form to install things >>>> differently in development than in production. It *will* lead to >>>> production only bugs and in the case of zip imports it'll lead to hard to >>>> diagnose errors and bugs that you'll never be able to reproduce in >>>> development. >>> >>> >>> I'm happy to concede the run from zip thing if somebody could explain >>> how should i use pip and virtualenv in production? >>> Currently it seems to be very clean and clear. I can have one folder >>> where i can dump multiple versions of the same project in wheel format >>> and having requirements.txt in each of them i can construct PYTHONPATH >>> and run things. Simple! >>> >>> How am i supposed to manage that using pip and virtual envs in production? >> >> The same way you'd use them in development? Hell I believe you can even do: >> >> $ virtualenv my_virtualenv >> $ my_virtualenv/bin/pip install path/to/wheelhouse/* >> >> The point is it's just installed libraries, asking this question doesn't >> really make much >> sense, it's like asking how do you use apt-get or yum in production. >> >>> > > Could you please reread this > https://mail.python.org/pipermail/distutils-sig/2014-January/023636.html > I'm explaining there what is the task at hand and why I'm favoring the > jar-like workflow for deployment.
It's clear that you favor the jar-like workflow. You will have discover for yourself why it works or does not work for you. There is more mature existing jar-like support for eggs (which will continue to work for some time, but not be improved). We do actually need a better way to turn libraries on and off individually, for example, if I install the wrong set of Python libraries on Ubuntu the plugin system for somesuch package crashes; having everything installed importable all the time is a problem. Even if you don't consider the unrelated packages that have chosen the same module name. _______________________________________________ Distutils-SIG maillist - Distutils-SIG@python.org https://mail.python.org/mailman/listinfo/distutils-sig