9th-January-2019: Beeware

Below are some notes that I took while attempting to follow Dan Yeaw's guide How to Rock Python Packaging with Poetry and Briefcase to bundle up an app written with Beeware's Toga for use by general consumers (without requiring them to install a bunch of additional development stuff). I ran into issues and overcame some of them with the steps mentioned below.

poetry init did not work after using the install command for Poetry $ curl -sSL https://raw.githubusercontent.com/sdispater/poetry/master/get-poetry.py | python

I had to use pip install poetry

However, I was at the library at the time, they might've been blocking a port required for that script

Got error cannot import name 'LegacyRepository' when attempting to search for and install briefcase or pytest [I did this after sawing that it's added later on]

Only worked after doing pip install --upgrade --pre toga and pip install --upgrade --pre poetry

It was unclear to me which Toga package to choose when searching. Looking ahead in the guide, I guessed that it was the toga option, so I chose that:

Search for a package: toga

Found 23 packages matching toga

Enter package # to add, or the complete package name if it is not listed: 
 [ 0] toga-iOS
 [ 1] toga-curses
 [ 2] toga-flask
 [ 3] toga-demo
 [ 4] toga-android
 [ 5] toga-django
 [ 6] toga-gtk
 [ 7] toga-qt
 [ 8] toga-dummy
 [ 9] toga-pyramid
 [10] toga-watchOS
 [11] toga-cocoa
 [12] toga-tvOS
 [13] toga-web
 [14] toga-win32
 [15] toga-dotnet
 [16] toga-winrt
 [17] toga-winforms
 [18] toga-mfc
 [19] toga-uwp
 [20] toga-cassowary
 [21] toga
 [22] toga-core
 > 21

The description that I provided included an apostrophe and apparently the build tool didn't handle this case, leading to an issue when I attempted to run the app for Linux:

File "setup.py", line 22
    description='An app that shows what Beeware's Toga is capable of.',

The config read:

description='An app that shows what Beeware's Toga is capable of.',

Upon attempting to generate the Linux file, I got an error for having an old install of pip (error below). I fixed this by using pip install --upgrade pip

Traceback (most recent call last):
  File "setup.py", line 79, in <module>
  File "/home/brandon/anaconda3/envs/BeeWare/lib/python3.6/distutils/core.py", line 134, in setup
    ok = dist.parse_command_line()
  File "/home/brandon/.cache/pypoetry/virtualenvs/bee-demo-py3.6/lib/python3.6/site-packages/setuptools/dist.py", line 347, in parse_command_line
    result = _Distribution.parse_command_line(self)
  File "/home/brandon/anaconda3/envs/BeeWare/lib/python3.6/distutils/dist.py", line 472, in parse_command_line
    args = self._parse_command_opts(parser, args)
  File "/home/brandon/.cache/pypoetry/virtualenvs/bee-demo-py3.6/lib/python3.6/site-packages/setuptools/dist.py", line 658, in _parse_command_opts
    nargs = _Distribution._parse_command_opts(self, parser, args)
  File "/home/brandon/anaconda3/envs/BeeWare/lib/python3.6/distutils/dist.py", line 528, in _parse_command_opts
    cmd_class = self.get_command_class(command)
  File "/home/brandon/.cache/pypoetry/virtualenvs/bee-demo-py3.6/lib/python3.6/site-packages/setuptools/dist.py", line 478, in get_command_class
  File "/home/brandon/.cache/pypoetry/virtualenvs/bee-demo-py3.6/lib/python3.6/site-packages/pkg_resources/__init__.py", line 2307, in require
    items = working_set.resolve(reqs, env, installer)
  File "/home/brandon/.cache/pypoetry/virtualenvs/bee-demo-py3.6/lib/python3.6/site-packages/pkg_resources/__init__.py", line 858, in resolve
    raise VersionConflict(dist, req).with_context(dependent_req)
pkg_resources.VersionConflict: (pip 9.0.1 (/home/brandon/.cache/pypoetry/virtualenvs/bee-demo-py3.6/lib/python3.6/site-packages), Requirement.parse('pip>=18.0'))

Issue with outdated setuptools

I was using Python 3.6, apparently, and I put ^3 in my Python config file.