Open BluABK opened 6 years ago
I set up a clean Debian 9 VM to see if I could get the dependencies from an OS repo instead of pip and requirements.txt, but it fell short...
The last and final issue was:
File ".../googleapiclient/discovery.py", line 365 in build_from_document
http = credentials.authorize(http)
AttributeError: 'Credentials' object has no attribute 'authorize'
Revised install readme draft (if it had worked):
### 2. Requirements:
#### Pip (any distro)
* Python 3.6 and above: `pip install -r requirements.txt`
* Python 3.5 and below: `pip install -r requirements-py35.txt` _(NB: Will likely be deprecated in near future)_
#### Debian 9 (Testing)
``
apt-get install python3-alembic python3-cachetools python3-certifi python3-chardet python3-click
python-configparser python3-googleapi python3-google-auth python3-httplib2 python3-idna python3-mako python3-markupsafe
python3-oauthlib python3-pathtools python3-pil python3-pyasn1 python3-pyasn1-modules python3-pyqt5 python3-dateutil
python3-editor python3-pretty-yaml python3-requests python3-requests-oauthlib python3-rsa python3-six
python3-sql-alchemy python3-uritemplate python-urllib3
``
``
pip3 install ffmpeg-python google-auth-oauthlib PyQt5-sip google-auth-httplib2
``
### 2a. Optional dependencies (not yet)
#### CLI: Fancy progressbars
``apt-get install python3-tqdm``
#### Playback: existing video detection
``apt-get install python3-watchdog``
#### Download capability
``apt-get install youtube-dl``
PyQt5 and sip are currently limiting installation options to pip alone.
The setup.py file in the repository root directory is mostly a hack that makes
pip install -e .
work.Stack Overflow answer https://stackoverflow.com/a/37311644 suggests a few methods that can accomplish this.
Windows only
Linux only
Mac OSX only
Compatible with all plattorms
cx_Freeze is a cross-platform packager that can package Python applications for Windows, Mac and Linux. It works by analysing your project and freezing the required packages and subpackages. Success depends largely on which packages you depend on and their complexity/correctness.
PyInstaller is another cross-platform packager that can package Python applications for Windows, Mac and Linux. This works in a similar way to cx_Freeze and will likely perform both better/worse depending on the packages.
Note: It is possible to write a very complex setup.py that allows you to build using one or more tools on different platforms, but I have usually ended up storing separate configs (e.g. setup-py2app.py) for clarity.