[PyQt] pyqtdeploy: undefined name 'dlls_dir' when building sysroot on windows 10

Phil Thompson phil at riverbankcomputing.com
Sat Oct 27 16:14:24 BST 2018


On 23 Oct 2018, at 11:39 am, Jacob Kanev <j_kanev at arcor.de> wrote:
> 
> Hi, I have a problem when using pyqtdeploy to build my application (https://github.com/jkanev/treetime).
> When building sysroot, on a Windows 10 64 bit system, using the --verbose flag, I get the following output:
> 
> E:\treetime\deploy>pyqtdeploy-sysroot --verbose sysroot.json
> [...]
> Looking for 'E:\treetime\deploy\Python-3.6.5.tar.xz'
> Found 'E:\treetime\deploy\Python-3.6.5.tar.xz'
> Copying E:\treetime\deploy\Python-3.6.5.tar.xz to E:\treetime\deploy\sysroot-win-32\src
> Unpacking 'Python-3.6.5.tar.xz'
> Installing an existing Python v3.6.5 as the host Python
> Copying C:\Program Files (x86)\Python36-32\python.exe to E:\treetime\deploy\sysroot-win-32\host\bin\python.exe
> Copying C:\Program Files (x86)\Python36-32\Scripts\pip.exe to E:\treetime\deploy\sysroot-win-32\host\bin\pip.exe
> Installing an existing Python v3.6.5 as the target Python
> Copying C:\Program Files (x86)\Python36-32\libs\python36.lib to E:\treetime\deploy\sysroot-win-32\lib\python36.lib
> Copying C:\Program Files (x86)\Python36-32\libs\python3.lib to E:\treetime\deploy\sysroot-win-32\lib\python3.lib
> Copying C:\Program Files (x86)\Python36-32\DLLs to E:\treetime\deploy\sysroot-win-32\lib\DLLs3.6
> Traceback (most recent call last):
>  File "c:\program files (x86)\python36-32\lib\runpy.py", line 193, in _run_module_as_main
>    "__main__", mod_spec)
>  File "c:\program files (x86)\python36-32\lib\runpy.py", line 85, in _run_code
>    exec(code, run_globals)
>  File "C:\Program Files (x86)\Python36-32\Scripts\pyqtdeploy-sysroot.exe\__main__.py", line 9, in <module>
>  File "c:\program files (x86)\python36-32\lib\site-packages\pyqtdeploy\pyqtdeploysysroot_main.py", line 83, in main
>    sysroot.build_components(args.component, args.no_clean)
>  File "c:\program files (x86)\python36-32\lib\site-packages\pyqtdeploy\sysroot\sysroot.py", line 106, in build_components
>    component.build(self)
>  File "c:\program files (x86)\python36-32\lib\site-packages\pyqtdeploy\sysroot\plugins\python\python.py", line 106, in build
>    self._install_target_from_existing_windows_version(sysroot)
>  File "c:\program files (x86)\python36-32\lib\site-packages\pyqtdeploy\sysroot\plugins\python\python.py", line 282, in _install_target_from_existing_windows_version
>    os.path.join(dlls_dir, vc_dll))
> NameError: name 'dlls_dir' is not defined
> 
> Unfortunately I cannot add "dlls_dir" as a key in the json file. How can I get the sysroot created? (Using a setting where Python is compiled from source is not supported under Windows). Any help would be appreciated.

Fixed in tonight's snapshot.

> 
> All the best, Jacob.
> 
> PS.: Related but not as important: If I want to use the existing version of Python and don't plan to build python from source at all (neither for host nor for target), why do I need the Python source code? If I omit it, pyqtdeploy-sysroot complains it cannot create a version number, if I put an empty file there that contains a version number, it complains the file must be unpackable.

The 'source' option is now optional if not building either the host or target from source. Instead use the new 'version' option.

Thanks,
Phil


More information about the PyQt mailing list