Skip to content

Update quickstart to use mip instead of upip #93

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
mjaspers2mtu opened this issue Aug 8, 2023 · 7 comments · Fixed by #94
Closed

Update quickstart to use mip instead of upip #93

mjaspers2mtu opened this issue Aug 8, 2023 · 7 comments · Fixed by #94

Comments

@mjaspers2mtu
Copy link

mjaspers2mtu commented Aug 8, 2023

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'
>>> 
@wnienhaus
Copy link
Collaborator

wnienhaus commented Aug 8, 2023

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
Copy link
Collaborator

wnienhaus commented Aug 8, 2023

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
Copy link
Author

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 closed this as not planned Won't fix, can't repro, duplicate, stale Aug 8, 2023
@mjaspers2mtu mjaspers2mtu reopened this Aug 8, 2023
@mjaspers2mtu
Copy link
Author

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
Copy link
Collaborator

wnienhaus commented Aug 8, 2023

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
Copy link
Author

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
Copy link
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
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants