Skip to content

Update quickstart to use mip instead of upip #93

@mjaspers2mtu

Description

@mjaspers2mtu
Contributor

Micropython now uses mip instead of upip https://docs.micropython.org/en/latest/reference/packages.html#packages

The quickstart guide and the installation method in the docs do not work on the latest builds.

>>> import upip
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: no module named 'upip'
>>> 

Activity

wnienhaus

wnienhaus commented on Aug 8, 2023

@wnienhaus
Collaborator

Thanks for the report. It's definitely something that needs to be fixed.

I'm working on that one (should have it soon), but currently focusing on finishing S2/S3 support.

For now you could use mpremote on a PC to copy the necessary files to your ESP32.

First clone this repo, then from within the repo root, run:

pip install mpremote  #if not yet installed
mpremote cp -r esp32_ulp :

Then it will work.

wnienhaus

wnienhaus commented on Aug 8, 2023

@wnienhaus
Collaborator

Potentially this would work too (I havent tested it, but I made the necessary package.json available as a Gist):

# on the ESP32
# make sure network is connected
import mip
mip.install("https://gist.githubusercontent.com/wnienhaus/5a30dd2ac7000764b065b44c5341f1e9/raw/54e1d43dbb0761b10134a34ca70d272064b66987/package.json")
mjaspers2mtu

mjaspers2mtu commented on Aug 8, 2023

@mjaspers2mtu
ContributorAuthor

Potentially this would work too (I havent tested it, but I made the necessary package.json available as a Gist):

# on the ESP32
# make sure network is connected
import mip
mip.install("https://gist.githubusercontent.com/wnienhaus/5a30dd2ac7000764b065b44c5341f1e9/raw/54e1d43dbb0761b10134a34ca70d272064b66987/package.json")

Wow thanks for the fast reply!

Your command almost worked:

>>> import mip
>>> mip.install("https://gist.githubusercontent.com/wnienhaus/5a30dd2ac7000764b065b44c5341f1e9/raw/54e1d43dbb0761b10134a34ca70d272064b66987/package.json")
Installing https://gist.githubusercontent.com/wnienhaus/5a30dd2ac7000764b065b44c5341f1e9/raw/54e1d43dbb0761b10134a34ca70d272064b66987/package.json to /lib
Copying: /lib/esp32_ulp/__init__.py
Copying: /lib/esp32_ulp/__main__.py
Copying: /lib/esp32_ulp/assemble.py
Copying: /lib/esp32_ulp/definesdb.py
Copying: /lib/esp32_ulp/link.py
Copying: /lib/esp32_ulp/nocomment.py
Copying: /lib/esp32_ulp/opcodes.py
Copying: /lib/esp32_ulp/parse_to_db.py
Copying: /lib/esp32_ulp/preprocess.py
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "mip/__init__.py", line 1, in install
  File "mip/__init__.py", line 1, in _install_package
  File "mip/__init__.py", line 1, in _install_json
  File "mip/__init__.py", line 1, in _download_file
  File "mip/__init__.py", line 1, in _chunk
OSError: -29184
>>> 
mjaspers2mtu

mjaspers2mtu commented on Aug 8, 2023

@mjaspers2mtu
ContributorAuthor

Potentially this would work too (I havent tested it, but I made the necessary package.json available as a Gist):

# on the ESP32
# make sure network is connected
import mip
mip.install("https://gist.githubusercontent.com/wnienhaus/5a30dd2ac7000764b065b44c5341f1e9/raw/54e1d43dbb0761b10134a34ca70d272064b66987/package.json")

Wow thanks for the fast reply!
Your command almost worked:

>>> import mip
>>> mip.install("https://gist.githubusercontent.com/wnienhaus/5a30dd2ac7000764b065b44c5341f1e9/raw/54e1d43dbb0761b10134a34ca70d272064b66987/package.json")
Installing https://gist.githubusercontent.com/wnienhaus/5a30dd2ac7000764b065b44c5341f1e9/raw/54e1d43dbb0761b10134a34ca70d272064b66987/package.json to /lib
Copying: /lib/esp32_ulp/__init__.py
Copying: /lib/esp32_ulp/__main__.py
Copying: /lib/esp32_ulp/assemble.py
Copying: /lib/esp32_ulp/definesdb.py
Copying: /lib/esp32_ulp/link.py
Copying: /lib/esp32_ulp/nocomment.py
Copying: /lib/esp32_ulp/opcodes.py
Copying: /lib/esp32_ulp/parse_to_db.py
Copying: /lib/esp32_ulp/preprocess.py
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "mip/__init__.py", line 1, in install
  File "mip/__init__.py", line 1, in _install_package
  File "mip/__init__.py", line 1, in _install_json
  File "mip/__init__.py", line 1, in _download_file
  File "mip/__init__.py", line 1, in _chunk
OSError: -29184
>>> 

Further after ignoring the oserror, and copying the example file counter.py, I got this:

>>> import counter
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "counter.py", line 15, in <module>
  File "/lib/esp32_ulp/__init__.py", line 1, in <module>
ImportError: no module named 'esp32_ulp.util'

I had to copy over util.py, which then results in:

>>> import counter
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "counter.py", line 15, in <module>
  File "/lib/esp32_ulp/__init__.py", line 3, in <module>
ImportError: can't import name preprocess
>>> 
wnienhaus

wnienhaus commented on Aug 8, 2023

@wnienhaus
Collaborator
ImportError: can't import name preprocess

this will be the same thing as util.py - the file did not get installed correctly.

Basically the mip install crashed while downloading preprocess.py so it and all files thereafter are corrupt/missing. You can see the full list of files that should have downloaded in the gist: (one more file that should have come after the mip crash during preprocess.py).

Make sure to manually copy all the missing files to the esp32_ulp directory on your ESP32.

mjaspers2mtu

mjaspers2mtu commented on Aug 8, 2023

@mjaspers2mtu
ContributorAuthor
ImportError: can't import name preprocess

this will be the same thing as util.py - the file did not get installed correctly.

Basically the mip install crashed while downloading preprocess.py so it and all files thereafter are corrupt/missing. You can see the full list of files that should have downloaded in the gist: (one more file that should have come after the mip crash during preprocess.py).

Make sure to manually copy all the missing files to the esp32_ulp directory on your ESP32.

This was exactly the problem thanks a bunch!

wnienhaus

wnienhaus commented on Sep 2, 2023

@wnienhaus
Collaborator

I'll reopen this, because one still cannot install using mip, and the latest MicroPython no longer has upip. (The above is just a workaround).
I'll add the necessary support next, by adding a valid package.json file and by updating the documentation.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

      Development

      Participants

      @mjaspers2mtu@wnienhaus

      Issue actions

        Update quickstart to use mip instead of upip · Issue #93 · micropython/micropython-esp32-ulp