utahta / pythonbrew

Python Environment manager
MIT License
1.44k stars 162 forks source link

Warn when installing incomplete python because of missing -devel packages #115

Open gthb opened 11 years ago

gthb commented 11 years ago

When Python is built without certain -devel packages installed, it is built without support for the corresponding functionality. In particular, SQLite and bzip2. One discovers this later when something fails (e.g. installing a .tar.bz2 tarball) and then must reinstall Python.

It would be nice to emit a warning (or maybe even fail) when building an incomplete Python, suggesting that these packages be installed first. E.g. on Debian:

sudo aptitude install libsqlite3-dev libbz2-dev

gthb commented 11 years ago

Maybe just emit to the console this bit from the build output:

Failed to find the necessary bits to build these modules:
_bsddb             _curses            _curses_panel   
_sqlite3           _tkinter           bsddb185        
bz2                dbm                dl              
gdbm               imageop            readline        
sunaudiodev
brandon-m-skinner commented 11 years ago

All well and good, but what about people who don't want these things. The three reasons why this shouldn't be added:

All in all, this seems a bit iffy and I don't think this sort of thing should be in the main pythonbrew. However it is open source, you're free to fork and add these features and put in a pull request or have your own version of pythonbrew.

metcalfc commented 11 years ago

Doesn't hold your hand? Thats the biggest pile I've ever heard. If software fails and doesn't tell you why thats a bug. The doc also doesn't mention requirements. Also a bug.

I don't suggest pythonbrew go full meta like rvm --autolibs but documenting requirements is just good software practice. Either improve the doc or fix the tool.

cpenner461 commented 11 years ago

+1 on comment from @gthb, would be convenient to have that info bubbled up to the console.

swiftarrow commented 10 years ago

+1 for this. I'm a beginner, following the Tango with Dango web book, and used pythonbrew in a virtual machine to install 2.7.5. I've spent the last two days trying to figure out why sqlite3 didn't work, and came here to file a bug, that these packages should be required before python runs:

libbz2-dev libdb5.1-dev libexpat1-dev libncurses5-dev libreadline6-dev libssl-dev libsqlite3-dev libxml2-dev libxslt-dev 

Now I see that you're not going to fix it? I think that Pythonbrew is awesome, especially for beginners like me, but hiding this requirement and not echoing the results of make back to the console (or even to the log file) have very frustrating results.

For beginners like me, please let the pythonbrew install script AT LEAST warn users that these packages should be installed for full functionality.

Thanks!

PS for other django beginners following the Tango with Django, please see Adorno; it's a script that will help you set up a virtual machine with virtual environments and python all set up to follow the tango with Django web series: https://github.com/swiftarrow/Adorno