indygreg / indygreg/PyOxidizer

Error when importing setuptools in code

Open
#683 1 comment 0 reactions 0 assignees View on GitHub
Dominant language
Rust
Stars
6.2k
Forks
256
PR merge metrics
No merged PRs in 30d

Description

Our project uses `Cythonize` and `setuptools` in a dependency. The output generated by pyoxidizer fails when it encounters the import in code.

- Project is django based. `Django==3.2.5`
- `pyoxidizer==0.24.0`

OS details
```
Distributor ID: Ubuntu
Description: Ubuntu 20.04.4 LTS
Release: 20.04
Codename: focal

Linux: 5.4.0-109-generic
```

Error trace
```
Traceback (most recent call last):
File "runpy", line 197, in _run_module_as_main
File "runpy", line 87, in _run_code
File "/home/users/hariom.narang/qureapp/build/x86_64-unknown-linux-gnu/debug/install/lib/qureapp/__main__.py", line 35, in
main()
File "/home/users/hariom.narang/qureapp/build/x86_64-unknown-linux-gnu/debug/install/lib/qureapp/__main__.py", line 31, in main
execute_from_command_line(args)
File "/home/users/hariom.narang/qureapp/build/x86_64-unknown-linux-gnu/debug/install/lib/django/core/management/__init__.py", line 419, in execute_from_command_line
utility.execute()
File "/home/users/hariom.narang/qureapp/build/x86_64-unknown-linux-gnu/debug/install/lib/django/core/management/__init__.py", line 395, in execute
django.setup()
File "/home/users/hariom.narang/qureapp/build/x86_64-unknown-linux-gnu/debug/install/lib/django/__init__.py", line 24, in setup
apps.populate(settings.INSTALLED_APPS)
File "/home/users/hariom.narang/qureapp/build/x86_64-unknown-linux-gnu/debug/install/lib/django/apps/registry.py", line 114, in populate
app_config.import_models()
File "/home/users/hariom.narang/qureapp/build/x86_64-unknown-linux-gnu/debug/install/lib/django/apps/config.py", line 301, in import_models
self.models_module = import_module(models_module_name)
File "importlib", line 127, in import_module
File "", line 1030, in _gcd_import
File "", line 1007, in _find_and_load
File "", line 986, in _find_and_load_unlocked
File "", line 680, in _load_unlocked
File "", line 850, in exec_module
File "", line 228, in _call_with_frames_removed
File "/home/users/hariom.narang/qureapp/build/x86_64-unknown-linux-gnu/debug/install/lib/qureapp/model_manager/models/__init__.py", line 1, in
from .sourcerunconfig import SourceRunConfig
File "/home/users/hariom.narang/qureapp/build/x86_64-unknown-linux-gnu/debug/install/lib/qureapp/model_manager/models/sourcerunconfig.py", line 8, in
from model_manager.qct_tasks.utils.qct_service import default_qct_source_config
File "/home/users/hariom.narang/qureapp/build/x86_64-unknown-linux-gnu/debug/install/lib/qureapp/model_manager/qct_tasks/utils/__init__.py", line 1, in
from .qct_service import get_sorted_dicoms_fpaths, get_qct_series_classifier
File "/home/users/hariom.narang/qureapp/build/x86_64-unknown-linux-gnu/debug/install/lib/qureapp/model_manager/qct_tasks/utils/qct_service.py", line 8, in
from qct_prod import classify_dicom_series
File "/home/users/hariom.narang/qureapp/build/x86_64-unknown-linux-gnu/debug/install/lib/qct_prod/__init__.py", line 4, in
from .prediction_controller import QCTPredictionController
File "/home/users/hariom.narang/qureapp/build/x86_64-unknown-linux-gnu/debug/install/lib/qct_prod/prediction_controller.py", line 10, in
from segment_lung.lobe_apis import LobeSegmentation
File "/home/users/hariom.narang/qureapp/build/x86_64-unknown-linux-gnu/debug/install/lib/segment_lung/lobe_apis.py", line 16, in
from .baseapi import SegmentationModelBase
File "/home/users/hariom.narang/qureapp/build/x86_64-unknown-linux-gnu/debug/install/lib/segment_lung/baseapi.py", line 15, in
from segment_lung.security import torch_load_enc
File "/home/users/hariom.narang/qureapp/build/x86_64-unknown-linux-gnu/debug/install/lib/segment_lung/security.py", line 7, in
from qure_adhoc.enc.qryptography import Crypter
File "src/qure_adhoc/__init__.py", line 1, in init qure_adhoc.__init__
File "src/qure_adhoc/cyth/__init__.py", line 1, in init qure_adhoc.cyth.__init__
File "src/qure_adhoc/cyth/utils.py", line 8, in init qure_adhoc.cyth.utils
File "src/qure_adhoc/cyth/qythonize.py", line 4, in init qure_adhoc.cyth.qythonize
File "/tmp/pip-target-scl0epn3/lib/python/setuptools/__init__.py", line 8, in
File "/tmp/pip-target-scl0epn3/lib/python/_distutils_hack/override.py", line 1, in
File "/tmp/pip-target-scl0epn3/lib/python/_distutils_hack/__init__.py", line 77, in do_override
File "/tmp/pip-target-scl0epn3/lib/python/_distutils_hack/__init__.py", line 64, in ensure_local_distutils
AssertionError: /home/users/hariom.narang/qureapp/build/x86_64-unknown-linux-gnu/debug/install/lib/distutils/core.py
```

Contributor guide

No contributing guide indexed for this repository

Research direction

Start with the import chain in the traceback, especially src/qure_adhoc/cyth/qythonize.py, then inspect setuptools/__init__.py and _distutils_hack/override.py where the AssertionError occurs. Reproduce the Django-based PyOxidizer build on Ubuntu 20.04 and establish behavior without the distutils assertion.

Written by the indexing model from the issue text.

Assessment

Tech stack
django, python
Domain
build-system
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
30/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.