hydrus/help/running_from_source.html

67 lines
7.0 KiB
HTML
Executable File

<html>
<head>
<title>running from source</title>
<link href="hydrus.ico" rel="shortcut icon" />
<link href="style.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div class="content">
<h3>running from source</h3>
<p>I write the client and server entirely in <a href="https://python.org">python</a>, which can run straight from source. It is not simple to get hydrus running this way, but if none of the built packages work for you (for instance you use a non-Ubuntu-compatible flavour of Linux), it may be the only way you can get the program to run. Also, if you have a general interest in exploring the code or wish to otherwise modify the program, you will obviously need to do this stuff.</p>
<h3>a quick note about Linux flavours</h3>
<p>I often point people here when they are running non-Ubuntu flavours of Linux and cannot run my build. One Debian user mentioned that he had an error like this:</p>
<p><ul>
<li><i>ImportError: /home/user/hydrus/libX11.so.6: undefined symbol: xcb_poll_for_reply64</i></li>
</ul></p>
<p>But that by simply deleting the <i>libX11.so.6</i> file in the hydrus install directory, he was able to boot. I presume this meant my hydrus build was then relying on his local libX11.so, which happened to have better API compatibility. If you receive a similar error, you might like to try the same sort of thing. Let me know if you discover anything!</p>
<h3>what you will need</h3>
<p>You will need basic python experience, python 2.7 and a number of python modules. Most of it you can get through pip.</p>
<p>If you are on Linux or OS X, or if you are on Windows and have an existing python you do not want to stomp all over with new modules, I recommend you create a virtual environment:</p>
<ul>
<li>(navigate to your hydrus extract folder)</li>
<li>pip install virtualenv (if you need it)</li>
<li>mkdir venv</li>
<li>virtualenv venv</li>
<li>. venv/bin/activate</li>
</ul>
<p>That '. venv/bin/activate' line turns your venv on, and will be needed every time you run the client.pyw/server.py files. You can easily tuck it into a launch script.</p>
<p>After that, you can go nuts with pip. I think this will do for most systems:</p>
<ul>
<li>pip install beautifulsoup4 html5lib lxml lz4 nose numpy opencv-python six pafy Pillow psutil pycrypto pylzma PyOpenSSL PyPDF2 PyYAML requests Send2Trash service_identity twisted youtube-dl</li>
</ul>
<p>You may want to do all that in smaller batches.</p>
<p>Depending on your OS, you might need something else. Ultimately, the best way to figure out if you have enough for hydrus is to just keep running client.pyw and see what it complains about missing. If you are not familiar with pip and get an error about a library already existing, know that you update an existing library with the --upgrade switch, like so:</p>
<ul>
<li>pip install --upgrade libraryname</li>
</ul>
<p>For Windows, depending on which compiler you are using, pip can have problems building some modules like lz4 and lxml. <a href="http://www.lfd.uci.edu/~gohlke/pythonlibs/">This page</a> has a lot of prebuilt binaries--I have found it very helpful many times. You may want to update python's sqlite3.dll as well--you can get it <a href="https://www.sqlite.org/download.html">here</a>, and just drop it in C:\Python27\DLLs or wherever you have python installed. I have a fair bit of experience with Windows python, so send me a mail if you need help.</a>
<p>You will also need wxPython 4.0. This can be simple or complicated. For Windows and OS X, just get it with pip like the rest:</p>
<ul>
<li>pip install wxPython</li>
</ul>
<p>If you run Linux, getting wxPython from pip needs a build, which in my experience is a time-consuming and frequently failing pain. <a href="https://wxpython.org/pages/downloads/index.html">Here</a> is their page on it.</p>
<p>They have some wheels for common distros <a href="https://extras.wxpython.org/wxPython4/extras/linux/">here</a>, which I highly recommend trying before you attempt to build. Even if your distro is not listed, try one that looks similar. On Ubuntu 16.04, I had more luck with the gtk2 build. You'll be running a command like:</p>
<ul>
<li>pip install -f https://extras.wxpython.org/wxPython4/extras/linux/gtk2/ubuntu-16.04 wxPython</li>
</ul>
<p>Even with a wheel, you might need some additional dependencies. In my different attempts to build or just get the wheel going, I needed one or more of these:</p>
<ul>
<li>sudo apt-get install libsdl1.2-dev libwebkitgtk3.0 libwebkitgtk3.0-dev gstreamer-1.0 libgstreamer-plugins-base1.0-dev v4l-utils freeglut3-dev libgtk-3-dev libglw1-mesa libglw1-mesa-dev python-dev</li>
</ul>
<p>I think the wheel might only need libsdl1.2-dev on Ubuntu 16.04, but your situation may be different. Again, this was a pain to figure out, so good luck!</p>
<p>YMMV. Feel free to email me if you run into trouble or discover any neat tricks.</p>
<p>OS X 10.9 is easier these days. If you can't get opencv working from pip, this should do it:</p>
<p><ul>
<li>brew tap homebrew/homebrew-science</li>
<li>brew install opencv <i>(or try opencv3, although I have had trouble with this)</i></li>
<li>export PYTHONPATH=/usr/local/lib/python2.7/site-packages:$PYTHONPATH</li>
</ul></p>
<p>If you don't have ffmpeg in your path and you want to import videos, you will need to put a static <a href="https://ffmpeg.org/">FFMPEG</a> executable in the install_dir/bin directory. Have a look at how I do it in the extractable compiled releases if you can't figure it out. You can either copy the exe from one of those releases, or download the latest build right from the FFMPEG site. I don't include these exes in the source release just because they are so big.</a>
<p>Once you have everything set up, client.pyw and server.py should look for and run off client.db and server.db just like the executables. They will look in the 'db' directory by default, or anywhere you point them with the "-d" parameter.</p>
<p>I develop hydrus on and am most experienced with Windows, so the program is much more stable and reasonable on that. I do not have as much experience with Linux or OS X, so I would particularly appreciate your Linux/OS X bug reports and any informed suggestions.</p>
<h3>my code</h3>
<p>Unlike most software people, I am more INFJ than INTP/J. My coding style is unusual and unprofessional, and everything is pretty much hacked together. Please look through the source if you are interested in how things work and ask me if you don't understand something. I'm constantly throwing new code together and then cleaning and overhauling it down the line.</p>
<p>I work alone, so while I am very interested in detailed bug reports or suggestions for good libraries to use, I am not looking for pull requests. Everything is <a href="http://sam.zoy.org/wtfpl/COPYING">WTFPL</a>, so feel free to fork and play around with things on your end as much as you like.</p>
</div>
</body>
</html>