esp-idf: ESP-IDF Tools Installer v2.2 does not work due to two different issues (IDFGH-2670)
Environment
Windows 10 with latest updates applied. (Other environment items were not applicable.)
Problem Description
I cannot install ESP-IDF Tools and ESP-IDF using the official installer. I would like to start developing for the ESP32 but I cannot install the tools. I would prefer not to install the environment manually.
I encounter two issues:
Issue 1
Expected Behavior
ESP-IDF is copied to destination directory after extraction and setp continues.
Actual Behavior
Error message “Failed to copy ESP-IDF to the destination directory: E:\espidf\3.3” appears and setup halts.
Steps to reproduce
- Download and run
esp-idf-tools-setup-2.2.exe - Choose option to download ESP-IDF (tested with 3.3 release and 3.3 branch)
Debug Logs
Relevant part:
2020-02-10 19:00:44.329 -------- 2020-02-10 19:00:44.332 Moving C:\Users\r\AppData\Local\Temp\is-EG1TH.tmp\esp-idf-v3.3.1 to E:\espidf\3.3 2020-02-10 19:00:44.332 Message box (OK): Failed to copy ESP-IDF to the destination directory: E:\espidf\3.3 2020-02-10 19:01:53.031 User chose OK. 2020-02-10 19:01:53.031 Message box (Yes/No): Installation log has been created, it may contain more information about the problem. Display the installation log now? 2020-02-10 19:01:53.962 User chose Yes. 2020-02-10 19:01:53.989 CurStepChanged raised an exception.
Workaround
Go to the .espressif\releases directory, manually extract and copy esp-idf-v3.3.1.zip to ESP-IDF destination directory, and re-run installer.
Issue 2
Expected Behavior
ESP-IDF Tools are set-up.
Actual Behavior
Error message “Installation has failed with exit code 1” appears and setup halts.
Steps to reproduce
- Download and run
esp-idf-tools-setup-2.2.exe - Choose option to download ESP-IDF (tested with 3.3 release and 3.3 branch)
- When installation fails, apply workaround from Issue 1
- Re-run
esp-idf-tools-setup-2.2.exe - Choose option to use the previously extracted ESP-IDF
Debug Logs
Relevant part:
2020-02-10 19:10:02.444 Installing Python environment:C:\Users\r\AppData\Local\Programs\Python\Python37\python.exe E:\espidf\3.3\tools\idf_tools.py install-python-env 2020-02-10 19:10:03.415 Done, exit code=1 2020-02-10 19:10:03.415 -------- 2020-02-10 19:10:03.415 Running command: C:\Users\r\AppData\Local\Programs\Python\Python37\python.exe E:\espidf\3.3\tools\idf_tools.py install-python-env usage: virtualenv [–version] [-v | -q] [–discovery {builtin}] [-p py] [–creator {builtin,cpython3-win,venv}] [–seeder {app-data,pip}] [–no-seed] [–activators comma_separated_list] [–clear] [–system-site-packages] [–copies] [–download | --no-download] [–extra-search-dir d [d …]] [–pip version] [–setuptools version] [–wheel version] [–no-pip] [–no-setuptools] [–no-wheel] [–clear-app-data] [–prompt prompt] [-h] [dest] virtualenv: error: unrecognized arguments: --no-site-packages Creating a new Python environment in E:\espidf.espressif\python_env\idf3.3_py3.7_env Traceback (most recent call last): File “E:\espidf\3.3\tools\idf_tools.py”, line 1349, in <module> main(sys.argv[1:]) File “E:\espidf\3.3\tools\idf_tools.py”, line 1345, in main action_func(args) File “E:\espidf\3.3\tools\idf_tools.py”, line 1156, in action_install_python_env stdout=sys.stdout, stderr=sys.stderr) File “C:\Users\r\AppData\Local\Programs\Python\Python37\lib\subprocess.py”, line 347, in check_call raise CalledProcessError(retcode, cmd) subprocess.CalledProcessError: Command ‘[‘C:\Users\r\AppData\Local\Programs\Python\Python37\python.exe’, ‘-m’, ‘virtualenv’, ‘–no-site-packages’, ‘E:\espidf\.espressif\python_env\idf3.3_py3.7_env’]’ returned non-zero exit status 2.
2020-02-10 19:10:03.415 -------- 2020-02-10 19:10:03.415 Message box (OK): Installation has failed with exit code 1 2020-02-10 19:10:21.217 User chose OK. 2020-02-10 19:10:21.235 Message box (Yes/No): Installation log has been created, it may contain more information about the problem. Display the installation log now? 2020-02-10 19:10:36.417 User chose Yes. 2020-02-10 19:10:36.460 CurStepChanged raised an exception.
About this issue
- Original URL
- State: closed
- Created 4 years ago
- Reactions: 3
- Comments: 41 (14 by maintainers)
Thanks for reporting! The fix for Python environment installation is in review and will be released soon (along with a new version of the installer).
As a temporary workaround, you may downgrade
virtualenvpackage as follows:After this, retry the installation.
Or remove
--no-site-packagesflag fromvirtualenvinsideidf_tools.py. The flag has been deprecated for quite some time (6 years).If you are experiencing this issue (on Windows), please try this version of the installer: https://dl.espressif.com/dl/esp-idf-tools-setup-2.3.exe
I tried the installer version listed above and it worked - the --no-site-packages problem disappeared, and the installer finished, creating the proper shortcuts in the Start Menu etc.
Just for the record
@pavestru yes, that’s the fix which is going to be merged. For the users of the Windows tools installer the problem is that it’s not trivial to modify idf_tools.py since it is extracted by the installer (at least when installing v3.3.1). For other OSes, modifying idf_tools.py can also be used as a workaround for now.
@krzychb Thanks for the info. I was able to get the Windows 10 install and example project build working with v2.3.3 tools installer when I used the “install Python” option, instead of pointing to my existing miniconda Python 3.8.5 installation.
It seems like that latest version of virtualenv has removed the
--no-site-packagesflag and the created virtualenv doesn’t inherit system site-packages by default. Instead, the flag--system-site-packagesis added to inherit system site-packages.With https://dl.espressif.com/dl/esp-idf-tools-setup-2.3.exe installation was smooth. I used python 3.8, git 2.23.0, window .1. Example hello_world running OK.
Once the fix is backported to release/v3.3 and release/v4.0, these branches will work as well. The backport should land tomorrow, hopefully. For the v3.3.1 and v4.0 versions, the installer includes a workaround (uses a bundled version of idf_tools.py). This is because we can’t change the release tags…
The difference between release branches and release versions is the difference between branches and tags. The installation flow for release branches is indeed to download the latest release tag for the branch (if one exists) and then use it as a reference repository when cloning the branch. Most of the time, this is the quickest way to download a release branch of IDF, and the final result is the same as if you would clone the branch from scratch.
Okay, I was able to reproduce the first issue as well. It happens because we are trying to use “RenameFile” function to move the extracted ESP-IDF directory into place, but this function doesn’t work when the destination is on a different drive. This will also be fixed shortly.