Closed VaporwareII closed 1 year ago
@VaporwareII Looks like there's some dependency conflict in the Pipfile which is super odd because there aren't any pinned versions so there shouldn't be any dependency issues.
I'd like to see what's in the /usr/local/paperpi/Pipfile
and Pipfile.lock
You can get them by typing:
cat /usr/local/paperpi/Pipfile
cat /usr/local/paperpi/Pipfile.lock
and then paste them into a comment.
Can you also try to run and let me know what happens?
$ cd /usr/local/paperpi
$ sudo rm Pipfile.lock
$ sudo pipenv install --skip-lock
Sure, walked away because I didn't expect you were on at the moment, lol
USER@Argon:~ $ cat /usr/local/paperpi/Pipfile
[[source]]
url = "https://www.piwheels.org/simple/"
verify_ssl = true
name = "piwheels"
[[source]]
url = "https://www.pypi.org/simple"
verify_ssl = true
name = "pypi"
[packages]
it8951 = {editable = true, git = "https://github.com/GregDMeyer/IT8951.git"}
epdlib = "*"
argconfigparse = "*"
[requires]
python_version = "3"
[dev-packages]
dictor = "*"
requests = "*"
pytz = "*"
feedparser = "*"
python-dateutil = "*"
currency-symbols = "*"
pycoingecko = "*"
pygal = "*"
qrcode = "*"
cairocffi = "*"
cffi ="*"
psutil = "*"
pillow = "*"
epdlib = "*"
querylms = "*"
cairosvg = "*"
ipykernel = "*"
pipreqs = "*"
USER@Argon:~ $ cat /usr/local/paperpi/Pipfile.lock
cat: /usr/local/paperpi/Pipfile.lock: No such file or directory
USER@Argon:~ $ cd /usr/local/paperpi
USER@Argon:/usr/local/paperpi $ sudo rm Pipfile.lock
rm: cannot remove 'Pipfile.lock': No such file or directory
USER@Argon:/usr/local/paperpi $ sudo pipenv install --skip-lock
The flag --skip-lock has been deprecated for removal. Without running the lock resolver it is not possible to manage multiple package indexes. Additionally it bypasses the build consistency guarantees provided by maintaining a lock file.
Installing dependencies from Pipfile...
An error occurred while installing epdlib! Will try again.
An error occurred while installing argconfigparse! Will try again.
Installing initially failed dependencies...
[pipenv.exceptions.InstallError]: Looking in indexes: https://www.piwheels.org/simple/, https://www.piwheels.org/simple
[pipenv.exceptions.InstallError]: Collecting epdlib (from -r /tmp/pipenv-5i6btzk4-requirements/pipenv-gwau9tww-hashed-reqs.txt (line 1))
[pipenv.exceptions.InstallError]: Using cached https://www.piwheels.org/simple/epdlib/epdlib-0.6.1.3-py3-none-any.whl (43 kB)
[pipenv.exceptions.InstallError]: Collecting argconfigparse (from -r /tmp/pipenv-5i6btzk4-requirements/pipenv-gwau9tww-hashed-reqs.txt (line 2))
[pipenv.exceptions.InstallError]: Using cached https://www.piwheels.org/simple/argconfigparse/ArgConfigParse-0.2.7-py3-none-any.whl (21 kB)
[pipenv.exceptions.InstallError]: INFO: pip is looking at multiple versions of epdlib to determine which version is compatible with other requirements. This could take a while.
[pipenv.exceptions.InstallError]: Collecting epdlib (from -r /tmp/pipenv-5i6btzk4-requirements/pipenv-gwau9tww-hashed-reqs.txt (line 1))
[pipenv.exceptions.InstallError]: Using cached https://www.piwheels.org/simple/epdlib/epdlib-0.4.3.7-py3-none-any.whl (40 kB)
[pipenv.exceptions.InstallError]: Using cached https://www.piwheels.org/simple/epdlib/epdlib-0.4.3.5-py3-none-any.whl (39 kB)
[pipenv.exceptions.InstallError]: Using cached https://www.piwheels.org/simple/epdlib/epdlib-0.4.3.3-py3-none-any.whl (39 kB)
[pipenv.exceptions.InstallError]: Using cached https://www.piwheels.org/simple/epdlib/epdlib-0.4.3.2-py3-none-any.whl (41 kB)
[pipenv.exceptions.InstallError]: Using cached https://www.piwheels.org/simple/epdlib/epdlib-0.4.3.1-py3-none-any.whl (38 kB)
[pipenv.exceptions.InstallError]: Using cached https://www.piwheels.org/simple/epdlib/epdlib-0.4.3-py3-none-any.whl (38 kB)
[pipenv.exceptions.InstallError]: Using cached https://www.piwheels.org/simple/epdlib/epdlib-0.4.2-py3-none-any.whl (41 kB)
[pipenv.exceptions.InstallError]: INFO: pip is still looking at multiple versions of epdlib to determine which version is compatible with other requirements. This could take a while.
[pipenv.exceptions.InstallError]: Using cached https://www.piwheels.org/simple/epdlib/epdlib-0.2.1-py3-none-any.whl (37 kB)
[pipenv.exceptions.InstallError]: Using cached https://www.piwheels.org/simple/epdlib/epdlib-0.1.5-py3-none-any.whl (118 kB)
[pipenv.exceptions.InstallError]: Using cached https://www.piwheels.org/simple/epdlib/epdlib-0.1.4-py3-none-any.whl (117 kB)
[pipenv.exceptions.InstallError]: Using cached https://www.piwheels.org/simple/epdlib/epdlib-0.1.2-py3-none-any.whl (37 kB)
[pipenv.exceptions.InstallError]: Using cached https://www.piwheels.org/simple/epdlib/epdlib-0.0.1.6-py3-none-any.whl (36 kB)
[pipenv.exceptions.InstallError]: INFO: This is taking longer than usual. You might need to provide the dependency resolver with stricter constraints to reduce runtime. See https://pip.pypa.io/warnings/backtracking for guidance. If you want to abort this run, press Ctrl + C.
[pipenv.exceptions.InstallError]: Using cached https://www.piwheels.org/simple/epdlib/epdlib-0.0.1.5-py3-none-any.whl (23 kB)
[pipenv.exceptions.InstallError]: Using cached https://www.piwheels.org/simple/epdlib/epdlib-0.0.1.2-py3-none-any.whl (35 kB)
[pipenv.exceptions.InstallError]:
[pipenv.exceptions.InstallError]: The conflict is caused by:
[pipenv.exceptions.InstallError]: epdlib 0.6.1.3 depends on Pillow
[pipenv.exceptions.InstallError]: epdlib 0.4.3.7 depends on Pillow
[pipenv.exceptions.InstallError]: epdlib 0.4.3.5 depends on Pillow
[pipenv.exceptions.InstallError]: epdlib 0.4.3.3 depends on Pillow
[pipenv.exceptions.InstallError]: epdlib 0.4.3.2 depends on Pillow
[pipenv.exceptions.InstallError]: epdlib 0.4.3.1 depends on Pillow
[pipenv.exceptions.InstallError]: epdlib 0.4.3 depends on Pillow
[pipenv.exceptions.InstallError]: epdlib 0.4.2 depends on Pillow
[pipenv.exceptions.InstallError]: epdlib 0.2.1 depends on Pillow
[pipenv.exceptions.InstallError]: epdlib 0.1.5 depends on Pillow
[pipenv.exceptions.InstallError]: epdlib 0.1.4 depends on Pillow
[pipenv.exceptions.InstallError]: epdlib 0.1.2 depends on Pillow
[pipenv.exceptions.InstallError]: epdlib 0.0.1.6 depends on Pillow
[pipenv.exceptions.InstallError]: epdlib 0.0.1.5 depends on Pillow
[pipenv.exceptions.InstallError]: epdlib 0.0.1.2 depends on Pillow
[pipenv.exceptions.InstallError]:
[pipenv.exceptions.InstallError]: To fix this you could try to:
[pipenv.exceptions.InstallError]: 1. loosen the range of package versions you've specified
[pipenv.exceptions.InstallError]: 2. remove package versions to allow pip attempt to solve the dependency conflict
[pipenv.exceptions.InstallError]: ERROR: Cannot install -r /tmp/pipenv-5i6btzk4-requirements/pipenv-gwau9tww-hashed-reqs.txt (line 1) because these package versions have conflicting dependencies.
[pipenv.exceptions.InstallError]: ERROR: ResolutionImpossible: for help visit https://pip.pypa.io/en/latest/topics/dependency-resolution/#dealing-with-dependency-conflicts
ERROR: Couldn't install package: [Requirement(vcs=None, req=NamedRequirement(name='epdlib', version='', req=Requirement.parse('epdlib'), extras=[], editable=False, parsed_line=<Line (editable=False, name=epdlib, path=None, uri=None, extras=(), markers=None, vcs=None, specifier=None, pyproject=None, pyproject_requires=None, pyproject_backend=None, ireq=None)>, line_part='epdlib'), markers=None, index=None, editable=False, hashes=set(), extras=(), name='epdlib', normalized_name='epdlib', is_file_or_url=False, is_vcs=False, extras_as_pip='', get_specifiers='', specifiers=None, hashes_as_pip='', _line_instance=<Line (editable=False, name=epdlib, path=None, uri=None, extras=(), markers=None, vcs=None, specifier=None, pyproject=None, pyproject_requires=None, pyproject_backend=None, ireq=epdlib)>), Requirement(vcs=None, req=NamedRequirement(name='argconfigparse', version='', req=Requirement.parse('argconfigparse'), extras=[], editable=False, parsed_line=<Line (editable=False, name=argconfigparse, path=None, uri=None, extras=(), markers=None, vcs=None, specifier=None, pyproject=None, pyproject_requires=None, pyproject_backend=None, ireq=None)>, line_part='argconfigparse'), markers=None, index=None, editable=False, hashes=set(), extras=(), name='argconfigparse', normalized_name='argconfigparse', is_file_or_url=False, is_vcs=False, extras_as_pip='', get_specifiers='', specifiers=None, hashes_as_pip='', _line_instance=<Line (editable=False, name=argconfigparse, path=None, uri=None, extras=(), markers=None, vcs=None, specifier=None, pyproject=None, pyproject_requires=None, pyproject_backend=None, ireq=argconfigparse)>)]
Package installation failed...
While the /usr/local pipfile.lock is missing, it is present in the tmp folder installation path. if I look at the Pipfile.lock under the tmp install folder it is
along with the tmp folder Pipfile
[[source]]
url = "https://www.pypi.org/simple"
verify_ssl = true
name = "pypi"
[packages]
it8951 = {editable = true, git = "https://github.com/GregDMeyer/IT8951.git"}
epdlib = "*"
argconfigparse = "*"
[requires]
python_version = "3"
[dev-packages]
dictor = "*"
requests = "*"
pytz = "*"
feedparser = "*"
python-dateutil = "*"
currency-symbols = "*"
pycoingecko = "*"
pygal = "*"
qrcode = "*"
cairocffi = "*"
cffi ="*"
psutil = "*"
pillow = "*"
epdlib = "*"
querylms = "*"
cairosvg = "*"
ipykernel = "*"
pipreqs = "*"
FWIW i am having the exact same issue.
harper@raspberrypi:/usr/local/paperpi $ sudo pipenv install --skip-lock
The flag --skip-lock has been deprecated for removal. Without running the lock resolver it is not possible to manage multiple package indexes. Additionally it bypasses the build consistency guarantees provided by maintaining a lock file.
Installing dependencies from Pipfile...
An error occurred while installing epdlib! Will try again.
An error occurred while installing argconfigparse! Will try again.
Installing initially failed dependencies...
[pipenv.exceptions.InstallError]: Looking in indexes: https://www.piwheels.org/simple/, https://www.piwheels.org/simple
[pipenv.exceptions.InstallError]: Collecting epdlib (from -r /tmp/pipenv-815hne9c-requirements/pipenv-uvv0lg9p-hashed-reqs.txt (line 1))
[pipenv.exceptions.InstallError]: Using cached https://www.piwheels.org/simple/epdlib/epdlib-0.6.1.3-py3-none-any.whl (43 kB)
[pipenv.exceptions.InstallError]: Collecting argconfigparse (from -r /tmp/pipenv-815hne9c-requirements/pipenv-uvv0lg9p-hashed-reqs.txt (line 2))
[pipenv.exceptions.InstallError]: Using cached https://www.piwheels.org/simple/argconfigparse/ArgConfigParse-0.2.7-py3-none-any.whl (21 kB)
[pipenv.exceptions.InstallError]: INFO: pip is looking at multiple versions of epdlib to determine which version is compatible with other requirements. This could take a while.
[pipenv.exceptions.InstallError]: Collecting epdlib (from -r /tmp/pipenv-815hne9c-requirements/pipenv-uvv0lg9p-hashed-reqs.txt (line 1))
[pipenv.exceptions.InstallError]: Using cached https://www.piwheels.org/simple/epdlib/epdlib-0.4.3.7-py3-none-any.whl (40 kB)
[pipenv.exceptions.InstallError]: Using cached https://www.piwheels.org/simple/epdlib/epdlib-0.4.3.5-py3-none-any.whl (39 kB)
[pipenv.exceptions.InstallError]: Using cached https://www.piwheels.org/simple/epdlib/epdlib-0.4.3.3-py3-none-any.whl (39 kB)
[pipenv.exceptions.InstallError]: Using cached https://www.piwheels.org/simple/epdlib/epdlib-0.4.3.2-py3-none-any.whl (41 kB)
[pipenv.exceptions.InstallError]: Using cached https://www.piwheels.org/simple/epdlib/epdlib-0.4.3.1-py3-none-any.whl (38 kB)
[pipenv.exceptions.InstallError]: Using cached https://www.piwheels.org/simple/epdlib/epdlib-0.4.3-py3-none-any.whl (38 kB)
[pipenv.exceptions.InstallError]: Using cached https://www.piwheels.org/simple/epdlib/epdlib-0.4.2-py3-none-any.whl (41 kB)
[pipenv.exceptions.InstallError]: INFO: pip is still looking at multiple versions of epdlib to determine which version is compatible with other requirements. This could take a while.
[pipenv.exceptions.InstallError]: Using cached https://www.piwheels.org/simple/epdlib/epdlib-0.2.1-py3-none-any.whl (37 kB)
[pipenv.exceptions.InstallError]: Using cached https://www.piwheels.org/simple/epdlib/epdlib-0.1.5-py3-none-any.whl (118 kB)
[pipenv.exceptions.InstallError]: Using cached https://www.piwheels.org/simple/epdlib/epdlib-0.1.4-py3-none-any.whl (117 kB)
[pipenv.exceptions.InstallError]: Using cached https://www.piwheels.org/simple/epdlib/epdlib-0.1.2-py3-none-any.whl (37 kB)
[pipenv.exceptions.InstallError]: Using cached https://www.piwheels.org/simple/epdlib/epdlib-0.0.1.6-py3-none-any.whl (36 kB)
[pipenv.exceptions.InstallError]: INFO: This is taking longer than usual. You might need to provide the dependency resolver with stricter constraints to reduce runtime. See https://pip.pypa.io/warnings/backtracking for guidance. If you want to abort this run, press Ctrl + C.
[pipenv.exceptions.InstallError]: Using cached https://www.piwheels.org/simple/epdlib/epdlib-0.0.1.5-py3-none-any.whl (23 kB)
[pipenv.exceptions.InstallError]: Using cached https://www.piwheels.org/simple/epdlib/epdlib-0.0.1.2-py3-none-any.whl (35 kB)
[pipenv.exceptions.InstallError]:
[pipenv.exceptions.InstallError]: The conflict is caused by:
[pipenv.exceptions.InstallError]: epdlib 0.6.1.3 depends on Pillow
[pipenv.exceptions.InstallError]: epdlib 0.4.3.7 depends on Pillow
[pipenv.exceptions.InstallError]: epdlib 0.4.3.5 depends on Pillow
[pipenv.exceptions.InstallError]: epdlib 0.4.3.3 depends on Pillow
[pipenv.exceptions.InstallError]: epdlib 0.4.3.2 depends on Pillow
[pipenv.exceptions.InstallError]: epdlib 0.4.3.1 depends on Pillow
[pipenv.exceptions.InstallError]: epdlib 0.4.3 depends on Pillow
[pipenv.exceptions.InstallError]: epdlib 0.4.2 depends on Pillow
[pipenv.exceptions.InstallError]: epdlib 0.2.1 depends on Pillow
[pipenv.exceptions.InstallError]: epdlib 0.1.5 depends on Pillow
[pipenv.exceptions.InstallError]: epdlib 0.1.4 depends on Pillow
[pipenv.exceptions.InstallError]: epdlib 0.1.2 depends on Pillow
[pipenv.exceptions.InstallError]: epdlib 0.0.1.6 depends on Pillow
[pipenv.exceptions.InstallError]: epdlib 0.0.1.5 depends on Pillow
[pipenv.exceptions.InstallError]: epdlib 0.0.1.2 depends on Pillow
[pipenv.exceptions.InstallError]:
[pipenv.exceptions.InstallError]: To fix this you could try to:
[pipenv.exceptions.InstallError]: 1. loosen the range of package versions you've specified
[pipenv.exceptions.InstallError]: 2. remove package versions to allow pip attempt to solve the dependency conflict
[pipenv.exceptions.InstallError]: ERROR: Cannot install -r /tmp/pipenv-815hne9c-requirements/pipenv-uvv0lg9p-hashed-reqs.txt (line 1) because these package versions have conflicting dependencies.
[pipenv.exceptions.InstallError]: ERROR: ResolutionImpossible: for help visit https://pip.pypa.io/en/latest/topics/dependency-resolution/#dealing-with-dependency-conflicts
ERROR: Couldn't install package: [Requirement(vcs=None, req=NamedRequirement(name='epdlib', version='', req=Requirement.parse('epdlib'), extras=[], editable=False, parsed_line=<Line (editable=False, name=epdlib, path=None, uri=None, extras=(), markers=None, vcs=None, specifier=None, pyproject=None, pyproject_requires=None, pyproject_backend=None, ireq=None)>, line_part='epdlib'), markers=None, index=None, editable=False, hashes=set(), extras=(), name='epdlib', normalized_name='epdlib', is_file_or_url=False, is_vcs=False, extras_as_pip='', get_specifiers='', specifiers=None, hashes_as_pip='', _line_instance=<Line (editable=False, name=epdlib, path=None, uri=None, extras=(), markers=None, vcs=None, specifier=None, pyproject=None, pyproject_requires=None, pyproject_backend=None, ireq=epdlib)>), Requirement(vcs=None, req=NamedRequirement(name='argconfigparse', version='', req=Requirement.parse('argconfigparse'), extras=[], editable=False, parsed_line=<Line (editable=False, name=argconfigparse, path=None, uri=None, extras=(), markers=None, vcs=None, specifier=None, pyproject=None, pyproject_requires=None, pyproject_backend=None, ireq=None)>, line_part='argconfigparse'), markers=None, index=None, editable=False, hashes=set(), extras=(), name='argconfigparse', normalized_name='argconfigparse', is_file_or_url=False, is_vcs=False, extras_as_pip='', get_specifiers='', specifiers=None, hashes_as_pip='', _line_instance=<Line (editable=False, name=argconfigparse, path=None, uri=None, extras=(), markers=None, vcs=None, specifier=None, pyproject=None, pyproject_requires=None, pyproject_backend=None, ireq=argconfigparse)>)]
Package installation failed...
harper@raspberrypi:/usr/local/paperpi $
I was able to get egplib installed via:
harper@raspberrypi:/usr/local/paperpi $ sudo pipenv run pip install epdlib
Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple
Collecting epdlib
Downloading https://www.piwheels.org/simple/epdlib/epdlib-0.6.1.3-py3-none-any.whl (43 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 43.4/43.4 kB 304.9 kB/s eta 0:00:00
Collecting Pillow (from epdlib)
Obtaining dependency information for Pillow from https://files.pythonhosted.org/packages/a7/55/a71924b9bfb0f5174fd61aca7f5bd4038ebb416addbe0338cefe1ae58c80/Pillow-10.0.0-cp39-cp39-manylinux_2_28_aarch64.whl.metadata
Downloading Pillow-10.0.0-cp39-cp39-manylinux_2_28_aarch64.whl.metadata (9.5 kB)
Collecting spidev (from epdlib)
Downloading spidev-3.6.tar.gz (11 kB)
Installing build dependencies ... done
Getting requirements to build wheel ... done
Installing backend dependencies ... done
Preparing metadata (pyproject.toml) ... done
Collecting RPi.GPIO (from epdlib)
Downloading RPi.GPIO-0.7.1.tar.gz (29 kB)
Preparing metadata (setup.py) ... done
Downloading Pillow-10.0.0-cp39-cp39-manylinux_2_28_aarch64.whl (3.2 MB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 3.2/3.2 MB 3.5 MB/s eta 0:00:00
Building wheels for collected packages: RPi.GPIO, spidev
Building wheel for RPi.GPIO (setup.py) ... done
Created wheel for RPi.GPIO: filename=RPi.GPIO-0.7.1-cp39-cp39-linux_aarch64.whl size=68900 sha256=5ffdd73b494f3453459209f35aeda111cd6b68109d8c9a6343106bd93599b697
Stored in directory: /root/.cache/pip/wheels/b4/65/39/789a186465c4823ffa930b950af77c86f1494adf1d8e21ac1a
Building wheel for spidev (pyproject.toml) ... done
Created wheel for spidev: filename=spidev-3.6-cp39-cp39-linux_aarch64.whl size=41390 sha256=bfcb1a8c2163273435286200cc79ba5471d8a4a154723d99852dea29e281ac37
Stored in directory: /root/.cache/pip/wheels/ee/38/fe/10920a2099285b1be0d6565f5b75039b39923102014a7ba34c
Successfully built RPi.GPIO spidev
Installing collected packages: spidev, RPi.GPIO, Pillow, epdlib
Successfully installed Pillow-10.0.0 RPi.GPIO-0.7.1 epdlib-0.6.1.3 spidev-3.6
and then inspect it via pipenv graph
:
harper@raspberrypi:/usr/local/paperpi $ pipenv graph
epdlib==0.6.1.3
├── Pillow [required: Any, installed: 10.0.0]
├── RPi.GPIO [required: Any, installed: 0.7.1]
└── spidev [required: Any, installed: 3.6]
IT8951==0.1.1
I wasn't able to get much further. Will update as i keep hacking
I was able to install the dependencies manually using pipenv run pip <dependency>
and paperpi.py now executes.
Not sure if what I did fixed it, because it still won't lock normally and I have never used pip before. the command sudo pipenv install fails with the normal dependency error. The remote install script also still fails.
I played with it a bit today and got the --skip-lock install to finish. Does that mean I can run it? I don't know what the next step is, because I do not know how to run the program.
USER@Argon:/usr/local/paperpi $ sudo pipenv install --skip-lock
Installing dependencies from Pipfile...
To activate this project's virtualenv, run pipenv shell.
Alternatively, run a command inside the virtualenv with pipenv run.
The things I tried are what harperreed presented above, where you
sudo pipenv run pip install epdlib
sudo pipenv run pip install argconfigparse
sudo pipenv run pip install IT8951
and run graph after
USER@Argon:/usr/local/paperpi $ pipenv graph
ArgConfigParse==0.2.7
epdlib==0.6.1.3
├── Pillow [required: Any, installed: 10.0.0]
├── RPi.GPIO [required: Any, installed: 0.7.1]
└── spidev [required: Any, installed: 3.6]
IT8951==0.1.1
I found the pypi notes section https://pypi.org/project/epdlib/ about the waveshare-epd library and saw it didn't install to /src. /usr/local/paperpi/venv/src only had the it8951 folder. I used the command in the pypi notes to install it. Now the dependency and directory structure looks like the below.
USER@Argon:/usr/local/paperpi $ pipenv graph
ArgConfigParse==0.2.7
epdlib==0.6.1.3
├── Pillow [required: Any, installed: 10.0.0]
├── RPi.GPIO [required: Any, installed: 0.7.1]
└── spidev [required: Any, installed: 3.6]
IT8951==0.1.1
waveshare-epd==0.0.0
├── Pillow [required: Any, installed: 10.0.0]
├── RPi.GPIO [required: Any, installed: 0.7.1]
└── spidev [required: Any, installed: 3.6]
USER@Argon:/usr/local/paperpi $ tree -d
.
├── config
│ ├── logging.cfg
│ ├── paperpi_base.ini
│ └── paperpi.ini
├── debian_packages-paperpi.txt
├── fonts
├── library
│ ├── CacheFiles.py
│ ├── get_help.py
│ ├── __init__.py
│ ├── InterruptHandler.py
│ ├── Plugin.py
│ ├── PluginTools.py
│ └── run_module.py
├── my_constants.py
├── paperpi.py
├── Pipfile
├── plugins
├── .venv
│ ├── bin
│ │ ├── activate
│ │ ├── activate.csh
│ │ ├── activate.fish
│ │ ├── activate.nu
│ │ ├── activate.ps1
│ │ ├── activate_this.py
│ │ ├── pip
│ │ ├── pip3
│ │ ├── pip-3.9
│ │ ├── pip3.9
│ │ ├── python -> /usr/bin/python3.9
│ │ ├── python3 -> python
│ │ ├── python3.9 -> python
│ │ ├── wheel
│ │ ├── wheel3
│ │ ├── wheel-3.9
│ │ └── wheel3.9
│ ├── .gitignore
│ ├── lib
│ │ └── python3.9
│ │ └── site-packages
│ │ ├── ArgConfigParse
│ │ ├── ArgConfigParse-0.2.7.dist-info
│ │ ├── _distutils_hack
│ │ ├── epdlib
│ │ ├── epdlib-0.6.1.3.dist-info
│ │ ├── PIL
│ │ ├── Pillow-10.0.0.dist-info
│ │ ├── Pillow.libs
│ │ ├── pip
│ │ ├── pip-23.2.1.dist-info
│ │ ├── pkg_resources
│ │ ├── RPi
│ │ ├── RPi.GPIO-0.7.1.dist-info
│ │ ├── setuptools
│ │ ├── setuptools-68.0.0.dist-info
│ │ ├── spidev-3.6.dist-info
│ │ ├── wheel
│ │ └── wheel-0.41.0.dist-info
│ ├── .project
│ ├── pyvenv.cfg
│ └── src
│ ├── it8951
│ │ ├── build
│ │ ├── .git
│ │ ├── .gitignore
│ │ ├── IT8951
│ │ ├── IT8951.egg-info
│ │ ├── setup.py
│ │ └── test
│ └── waveshare-epd
│ ├── Arduino
│ ├── .git
│ ├── RaspberryPi_JetsonNano
│ ├── README.md
│ ├── STM32
└── waveshare_epd
Wow! Good work fiddling! I'm not sure what caused the avalanche of piwheels errors. It's good info though. I'll have to investigate that further.
Thanks for all the good info. I wish all bug reports were this thorough!
Running it is a little tricky because the config file, entry script and unit files were not installed. You can get around that though.
You can try the following:
From the paperpi directory run pipenv run paperpi.py
That should shove a config file in ~/.config/txoof.paperpi.ini
Edit that to configure your epd and enable a few plugins. Then run pipenv run paperpi.py
again and it should start up.
Tomorrow I'll try to diagnose the problem and see if I can recreate it.
One more useful bit of info, can you run which python3
and python3 -V
?
I'm wondering if you have a weird python environment that might be causing strange behavior.
Also, don't worry about the lock; it's not strictly necessary.
I'm sick with covid so I don't have much else to do and troubleshooting is about all I can focus on.
USER@Argon:/usr/local/paperpi $ which python3
/usr/bin/python3
USER@Argon:/usr/local/paperpi $ python3 -V
Python 3.9.2
USER@Argon:/usr/local/paperpi $ pipenv run paperpi.py
Error: the command paperpi.py could not be found within PATH or Pipfile's [scripts].
When you say run that command in the paperpi folder do you mean /local/usr/bin/paperpi? I assume not the ~/USER/paperpi one because there's just an install script there. Maybe I accidentally put that one there when I was trying to figure out how to download from github.
edit: I think I fixed the locking issue? I mean I got the lock file to generate at least. I still can't launch paperpi.py
USER@Argon:/usr/local/paperpi $ sudo nano Pipfile
[[source]]
url = "https://www.pypi.org/simple"
verify_ssl = true
name = "pypi"
[requires]
python_version = '3.9'
[packages]
IT8951 = {git = "https://github.com/GregDMeyer/IT8951.git", editable = true}
waveshare-epd = {git = "https://github.com/waveshare/e-Paper.git#egg=waveshare_epd&subdirectory=RaspberryPi_JetsonNano/python", editable = true}
epdlib = '>=0.6.1.0'
ArgConfigParse = '>=0.2.7'
[dev-packages]
etc...
USER@Argon:/usr/local/paperpi $ pipenv lock
Locking [packages] dependencies...
Building requirements...
Resolving dependencies...
Resolving dependencies...
✔ Success!
Locking [dev-packages] dependencies...
Building requirements...
Resolving dependencies...
Resolving dependencies...
✔ Success!
Updated Pipfile.lock (2eac4d885556b8544e377e55e5f2d1d89f856e8ef5927a51d5e6cf4a45d89a4b)!
Hmm, looks like you don't need the waveshare-epd line in the Pipfile since it's not a python package. I took it out and it runs all the way through the installer. edit: also could have been a typo. it should have been waveshare_edp as the package name.
USER@Argon:/usr/local/paperpi $ sudo pipenv run pip install -e "git+https://github.com/waveshare/e-Paper.git#egg=waveshare_epd&subdirectory=RaspberryPi_JetsonNano/python"
Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple
Obtaining waveshare_epd from git+https://github.com/waveshare/e-Paper.git#egg=waveshare_epd&subdirectory=RaspberryPi_JetsonNano/python
Cloning https://github.com/waveshare/e-Paper.git to ./.venv/src/waveshare-epd
Running command git clone --filter=blob:none --quiet https://github.com/waveshare/e-Paper.git /usr/local/paperpi/.venv/src/waveshare-epd
Resolved https://github.com/waveshare/e-Paper.git to commit fc4f54334d087dae440e3e9ac2bf8d809dfcfb53
Preparing metadata (setup.py) ... done
Requirement already satisfied: Pillow in ./.venv/lib/python3.9/site-packages (from waveshare_epd) (10.0.0)
Requirement already satisfied: RPi.GPIO in ./.venv/lib/python3.9/site-packages (from waveshare_epd) (0.7.1)
Requirement already satisfied: spidev in ./.venv/lib/python3.9/site-packages (from waveshare_epd) (3.6)
Installing collected packages: waveshare_epd
Running setup.py develop for waveshare_epd
Successfully installed waveshare_epd-0.0.0
USER@Argon:/tmp/PaperPi_rY5ya $ sudo /tmp/PaperPi_rY5ya/install/install.sh
checking if paperpi-daemon.service is running
paperpi-daemon.service not running
done
checking for required debian packages
found debian packages for PaperPi module debian_packages-crypto.txt
checking libcairo2
found debian packages for PaperPi module debian_packages-paperpi.txt
checking libtiff5
checking libopenjp2-7
checking python3-pip
checking libatlas-base-dev
checking libjpeg-dev
required packages installed
installing required python packages with pip3
successfully installed requirements
Removing existing installation found at /usr/local/paperpi
Installing files to /usr/local/paperpi
Creating virtual environment for paperpi in /usr/local/paperpi
/usr/local/paperpi /tmp/PaperPi_rY5ya
Creating a virtualenv for this project...
Pipfile: /usr/local/paperpi/Pipfile
Using /usr/bin/python3.9 (3.9.2) to create virtualenv...
⠴ Creating virtual environment...created virtual environment CPython3.9.2.final.0-64 in 579ms
creator CPython3Posix(dest=/usr/local/paperpi/.venv, clear=False, no_vcs_ignore=False, global=False)
seeder FromAppData(download=False, pip=bundle, setuptools=bundle, wheel=bundle, via=copy, app_data_dir=/root/.local/share/virtualenv)
added seed packages: pip==23.2.1, setuptools==68.0.0, wheel==0.41.0
activators BashActivator,CShellActivator,FishActivator,NushellActivator,PowerShellActivator,PythonActivator
✔ Successfully created virtual environment!
Virtualenv location: /usr/local/paperpi/.venv
Pipfile.lock not found, creating...
Locking [packages] dependencies...
Building requirements...
Resolving dependencies...
Resolving dependencies...
✔ Success!
Locking [dev-packages] dependencies...
Building requirements...
Resolving dependencies...
Resolving dependencies...
✔ Success!
Updated Pipfile.lock (14d9787ff6bf49e617eb156b4c7e41f5fe4d9d32f391d79545a39c0bbadecc57)!
Installing dependencies from Pipfile.lock (decc57)...
To activate this project's virtualenv, run pipenv shell.
Alternatively, run a command inside the virtualenv with pipenv run.
/tmp/PaperPi_rY5ya
Installing requirements in virtual environment for paperpi plugins
/usr/local/paperpi /tmp/PaperPi_rY5ya
installing Plugin requirements:
dictor
requests
epdlib
QueryLMS
requests
dictor
epdlib
requests
cairocffi
cffi
CairoSVG
currency_symbols
dictor
feedparser
pycoingecko
pygal
qrcode
requests
Pillow
Pillow
feedparser
requests
dictor
Pillow
python_dateutil
requests
psutil
dictor
pytz
requests
Pillow
requests
Requirements file provided! Importing into Pipfile...
Pipfile.lock (decc57) out of date, updating to (e57609)...
Locking [packages] dependencies...
Building requirements...
Resolving dependencies...
Resolving dependencies...
✔ Success!
Locking [dev-packages] dependencies...
Building requirements...
Resolving dependencies...
Resolving dependencies...
✔ Success!
Updated Pipfile.lock (8554541aa879c9b465701537e4d73f31b47a1bf4cab2bfc987374b4440e57609)!
Installing dependencies from Pipfile.lock (e57609)...
To activate this project's virtualenv, run pipenv shell.
Alternatively, run a command inside the virtualenv with pipenv run.
/tmp/PaperPi_rY5ya
adding executable to /usr/local/bin/paperpi
adding user and group paperpi
installing system config
##############################################################
existing config files found at /etc/default/paperpi.ini
existing files will not be overwritten
a new version will be added at /etc/default/paperpi.ini.new
it may be useful to review the differences between the config files
##############################################################
installing systemd unit file to: /etc/systemd/system/paperpi-daemon.service
reloading systemd unit files
Would you like to enable paperpi to run in daemon mode? (Y/n): n
you selected to run on demand
you can enable the daemon later by typing:
$ sudo systemctl enable paperpi-daemon.service
checking if SPI is enabled
You must now complete the following steps
REQUIRED:
* edit /etc/default/paperpi.ini and set:
- display_type = [YOUR_SCREEN]
- vcom = [only set for HD screens]
OPTIONAL:
* Enable plugins by removing the "x" from section headers
* Configure the plugins to match your needs/environment
Would you like to do that now? (y/N): y
install completed
USER@Argon:/usr/local/paperpi $ pipenv graph
ArgConfigParse==0.2.7
CairoSVG==2.7.1
├── cairocffi [required: Any, installed: 1.6.1]
│ └── cffi [required: >=1.1.0, installed: 1.15.1]
│ └── pycparser [required: Any, installed: 2.21]
├── cssselect2 [required: Any, installed: 0.7.0]
│ ├── tinycss2 [required: Any, installed: 1.2.1]
│ │ └── webencodings [required: >=0.4, installed: 0.5.1]
│ └── webencodings [required: Any, installed: 0.5.1]
├── defusedxml [required: Any, installed: 0.7.1]
├── pillow [required: Any, installed: 10.0.0]
└── tinycss2 [required: Any, installed: 1.2.1]
└── webencodings [required: >=0.4, installed: 0.5.1]
currency-symbols==2.0.3
dictor==0.1.11
epdlib==0.6.1.3
├── Pillow [required: Any, installed: 10.0.0]
├── RPi.GPIO [required: Any, installed: 0.7.1]
└── spidev [required: Any, installed: 3.6]
feedparser==6.0.10
└── sgmllib3k [required: Any, installed: 1.0.0]
IT8951==0.1.1
psutil==5.9.5
pycoingecko==3.1.0
└── requests [required: Any, installed: 2.31.0]
├── certifi [required: >=2017.4.17, installed: 2023.7.22]
├── charset-normalizer [required: >=2,<4, installed: 3.2.0]
├── idna [required: >=2.5,<4, installed: 3.4]
└── urllib3 [required: >=1.21.1,<3, installed: 2.0.4]
pygal==3.0.0
python-dateutil==2.8.2
└── six [required: >=1.5, installed: 1.16.0]
pytz==2023.3
qrcode==7.4.2
├── pypng [required: Any, installed: 0.20220715.0]
└── typing-extensions [required: Any, installed: 4.7.1]
QueryLMS==0.2.2.1
└── requests [required: Any, installed: 2.31.0]
├── certifi [required: >=2017.4.17, installed: 2023.7.22]
├── charset-normalizer [required: >=2,<4, installed: 3.2.0]
├── idna [required: >=2.5,<4, installed: 3.4]
└── urllib3 [required: >=1.21.1,<3, installed: 2.0.4]
@VaporwareII
After all that, does it run?
I'll need to review this on a bigger screen when I have access to my development environment.
I really appreciate all the debugging and hacking you all did.
I can't see anything weird in your environment, so I'm really curious to get to the bottom of this.
@harperreed your comments are super helpful too. I think the root cause is that pillow is failing to install from Piwheels and that's cascading down into epdlib failing. It looks like when you manually installed epdlib, it was pulled from pypi instead.
Yeah I took piwheels out of the Pipfile entirely because I saw a comment in the pipenv github that it gets confused between two sources sometimes. but I wasn't properly debugging by trying ust one change at a time, I did that and reformat the pipfile too. There was another comment that it checks top to bottom so I tried moving the packages around.
It runs. I chose not to use daemon mode so I only see a few lines, and I chose the weather plugin so the data doesn't really change between when I glance at it. edit: oh there it went, yes it updated and pulled new values
USER@Argon:/usr/local/paperpi $ paperpi
######################################################################
This appears to be the first time PaperPi has been run.
A user configuration file created: /home/USER/.config/com.txoof.paperpi/paperpi.ini
At minimum you edit this file and add a display_type and enable one plugin.
Edit the configuration file with:
$ nano /home/USER/.config/com.txoof.paperpi/paperpi.ini
######################################################################
***Exiting***
USER@Argon:/usr/local/paperpi $ nano /home/USER/.config/com.txoof.paperpi/paperpi.ini
USER@Argon:/usr/local/paperpi $ sudo nano /etc/default/paperpi.ini
USER@Argon:/usr/local/paperpi $ paperpi
21:06:14 paperpi :get_config_files:256 :INFO - using configuration files to configure PaperPi: [PosixPath('/usr/local/paperpi/config/paperpi.ini'), PosixPath('/home/USER/.config/com.txoof.paperpi/paperpi.ini')]
21:06:14 paperpi :main :658 :INFO - ********** PaperPi 0.5.4.0 RGB Starting **********
21:06:14 paperpi :main :662 :INFO - PaperPi is running in on-demand mode
21:06:15 Block :padding :346 :WARNING - padding value is greater >= 1/2 of area dimension 12, no image will be displayed: 10
21:06:15 Block :padding :353 :WARNING - the padded area available may be too small to display any content: Area: (250, 12), Padded Area: [230, -8]
21:06:15 Block :font_size :824 :WARNING - no font size set, using {font_size}
21:06:22 Block :padding :346 :WARNING - padding value is greater >= 1/2 of area dimension 12, no image will be displayed: 10
21:06:22 Block :padding :353 :WARNING - the padded area available may be too small to display any content: Area: (150, 12), Padded Area: [130, -8]
21:06:22 Block :font_size :824 :WARNING - no font size set, using {font_size}
21:06:22 Block :padding :346 :WARNING - padding value is greater >= 1/2 of area dimension 12, no image will be displayed: 10
21:06:22 Block :padding :353 :WARNING - the padded area available may be too small to display any content: Area: (100, 12), Padded Area: [80, -8]
21:06:22 Block :font_size :824 :WARNING - no font size set, using {font_size}
^CUSER@Argon:/usr/local/paperpi $ paperpi
07:28:55 paperpi :get_config_files:256 :INFO - using configuration files to configure PaperPi: [PosixPath('/usr/local/paperpi/config/paperpi.ini'), PosixPath('/home/USER/.config/com.txoof.paperpi/paperpi.ini')]
07:28:55 paperpi :main :658 :INFO - ********** PaperPi 0.5.4.0 RGB Starting **********
07:28:55 paperpi :main :662 :INFO - PaperPi is running in on-demand mode
07:28:55 Block :padding :346 :WARNING - padding value is greater >= 1/2 of area dimension 12, no image will be displayed: 10
07:28:55 Block :padding :353 :WARNING - the padded area available may be too small to display any content: Area: (250, 12), Padded Area: [230, -8]
07:28:55 Block :font_size :824 :WARNING - no font size set, using {font_size}
07:29:03 Block :padding :346 :WARNING - padding value is greater >= 1/2 of area dimension 12, no image will be displayed: 10
07:29:03 Block :padding :353 :WARNING - the padded area available may be too small to display any content: Area: (150, 12), Padded Area: [130, -8]
07:29:03 Block :font_size :824 :WARNING - no font size set, using {font_size}
07:29:03 Block :padding :346 :WARNING - padding value is greater >= 1/2 of area dimension 12, no image will be displayed: 10
07:29:03 Block :padding :353 :WARNING - the padded area available may be too small to display any content: Area: (100, 12), Padded Area: [80, -8]
07:29:03 Block :font_size :824 :WARNING - no font size set, using {font_size}
@VaporwareII
Hmm, looks like you don't need the waveshare-epd line in the Pipfile since it's not a python package. I took it out and it runs all the way through the installer. edit: also could have been a typo. it should have been waveshare_edp as the package name.
How on earth did that waveshare line get in there? I can't figure out how that got into the dependencies at all. The waveshare libraries should be distributed as part of the source.
@VaporwareII and @harperreed I'm trying to reproduce the errors you all are getting and I'm just not getting anywhere with it. I just created a fresh image from Bullseye32 lite and tried to break the installer, but can't reproduce the errors you're seeing.
Would either of you all be willing to take an image of your SD card and send it to me? I'd love to poke at your setups and see if I can figure out what's going on.
BE AWARE: I'll be able to see:
I promise not to do anything awful with it, but I just want you to be aware of what you're sharing before you do it...
@VaporwareII
Hmm, looks like you don't need the waveshare-epd line in the Pipfile since it's not a python package. I took it out and it runs all the way through the installer. edit: also could have been a typo. it should have been waveshare_edp as the package name.
How on earth did that waveshare line get in there? I can't figure out how that got into the dependencies at all. The waveshare libraries should be distributed as part of the source.
Oh I put it in there as part of my debugging. throwing things at the wall. I mentioned it in comment #6
my uname --all
Linux Argon 6.1.21-v8+ #1642 SMP PREEMPT Mon Apr 3 17:24:16 BST 2023 aarch64 GNU/Linux
I'm on 64bit, maybe that's related? I'll think about the image, I don't think I have spent much time configuring this box, but it's on a SSD instead of SD card.
also I noticed after the script finished the first part where it fails, the Pipfile gets a lot longer after it merges requirements.txt
[[source]]
url = "https://www.pypi.org/simple"
verify_ssl = true
name = "pypi"
[requires]
python_version = '3.9'
[packages]
IT8951 = {git = "https://github.com/GregDMeyer/IT8951.git", editable = true}
epdlib = "*"
ArgConfigParse = '>=0.2.7'
dictor = "*"
requests = "*"
querylms = "*"
cairocffi = "*"
cffi = "*"
cairosvg = "*"
currency-symbols = "*"
feedparser = "*"
pycoingecko = "*"
pygal = "*"
qrcode = "*"
pillow = "*"
python-dateutil = "*"
psutil = "*"
pytz = "*"
[dev-packages]
dictor = "*"
requests = "*"
pytz = "*"
feedparser = "*"
python-dateutil = "*"
currency-symbols = "*"
pycoingecko = "*"
pygal = "*"
qrcode = "*"
cairocffi = "*"
cffi ="*"
psutil = "*"
pillow = "*"
epdlib = "*"
querylms = "*"
cairosvg = "*"
ipykernel = "*"
pipreqs = "*"
I'm on 64bit, maybe that's related?
Yes! That's definitely related! The piwheels packages are built against a 32 bit arch! That's why epdlib fails miserably, it's trying to install a 32bit version of Pillow and that's not available.
I'll see if I can reproduce it with a 64bit version of the OS.
At minimum, I can add that requirement to the docs and probably check for it in the installer.
Good thinking!
@VaporwareII and @harperreed,
I've updated the install scripts to check for 64 bit systems; the remote installer/installer will both abort if they detect a 64 bit system. You can test out the new installer here and see if it fails on your systems:
curl -fsSL https://raw.githubusercontent.com/txoof/PaperPi/main/install/remote_install.sh | bash -s -- -b I120_installer_fails
Would you mind checking the readme testing the manual install instructions I've worked up for 64 bit systems?
Thanks again for your troubleshooting and help figuring out what was going on.
@VaporwareII and @harperreed
I'm going to close this ticket. If you have more to add, we can reopen it.
Describe the bug Install can't get past the PIP venv. Tried twice but I don't understand the error messages presented around the PIP dependencies.
To Reproduce Steps to reproduce the behavior:
Expected behavior resuming installer would resume installation
Hardware
OS Info Run
cat /etc/os-release
[main]
Section of ConfigPlugin Issues
Additional context This is a relatively fresh RPI install, so I'm not sure what would be wrong. I have the Pi in a Argon40 V2 Case, which has some GPIO script components. I had to disable a dtoverlay = GPIO23 code in /boot/config.txt for their IR receiver, but I don't think that is related. I have run the waveshare demo code via python and the screen works fine.