Browse Source

simply example

main
Brett Langdon 3 years ago
parent
commit
92ca04bf10
No known key found for this signature in database GPG Key ID: C2BEA329670CD664
5 changed files with 27 additions and 15 deletions
  1. +17
    -6
      README.md
  2. +2
    -6
      shadow_import_issue/__init__.py
  3. +4
    -1
      shadow_import_issue/c_exts/_child.pyx
  4. +0
    -1
      shadow_import_issue/c_exts/py_mod.py
  5. +4
    -1
      shadow_import_issue/sub/child.py

+ 17
- 6
README.md View File

@ -36,15 +36,26 @@ docker run --rm shadow-import-issue
Expected output is to fail with: Expected output is to fail with:
``` ```
pure-python VAR
<module 'shadow_import_issue.shadow' from '/src/shadow_import_issue/shadow.py'>
VAR
<module 'shadow_import_issue.c_exts.shadow_import_issue.shadow' from '/src/shadow_import_issue/c_exts/shadow.py'>
Traceback (most recent call last): Traceback (most recent call last):
File "/src/test.py", line 1, in <module> File "/src/test.py", line 1, in <module>
import shadow_import_issue import shadow_import_issue
File "/src/shadow_import_issue/__init__.py", line 5, in <module>
from .c_exts import _child # isort:skip
File "shadow_import_issue/c_exts/_child.pyx", line 1, in init shadow_import_issue.c_exts._child
from shadow_import_issue.shadow import VAR
ImportError: cannot import name VAR
File "/src/shadow_import_issue/__init__.py", line 3, in <module>
import shadow_import_issue.c_exts._child # isort:skip
File "shadow_import_issue/c_exts/_child.pyx", line 4, in init shadow_import_issue.c_exts._child
print(shadow_import_issue.shadow.VAR)
AttributeError: module 'shadow_import_issue.c_exts.shadow_import_issue.shadow' has no attribute 'VAR'
``` ```
The module and variable will import fine with Python, but will fail the import from the Cython module. The module and variable will import fine with Python, but will fail the import from the Cython module.
## Analysis
- This only happens with editable install
- This only occurs with `setuptools>=64.0.0`
- `setuptools>=64.0.0` changed from using `.egg-link` to `.pth` + editable loader
- The module loaded by Cython has the name `shadow_import_issue.c_exts.shadow_import_issue.shadow` and is loaded from `shadow_import_issue/c_exts/shadow.py`
- The issue does not happen with `Cython==3.0.0a11`

+ 2
- 6
shadow_import_issue/__init__.py View File

@ -1,7 +1,3 @@
from .sub import child # isort:skip
import shadow_import_issue.sub.child # isort:skip
print("pure-python", child.VAR)
from .c_exts import _child # isort:skip
print("cython", _child.VAR)
import shadow_import_issue.c_exts._child # isort:skip

+ 4
- 1
shadow_import_issue/c_exts/_child.pyx View File

@ -1 +1,4 @@
from shadow_import_issue.shadow import VAR
import shadow_import_issue.shadow
print(shadow_import_issue.shadow)
print(shadow_import_issue.shadow.VAR)

+ 0
- 1
shadow_import_issue/c_exts/py_mod.py View File

@ -1 +0,0 @@
# empty on purpose

+ 4
- 1
shadow_import_issue/sub/child.py View File

@ -1 +1,4 @@
from shadow_import_issue.shadow import VAR
import shadow_import_issue.shadow
print(shadow_import_issue.shadow)
print(shadow_import_issue.shadow.VAR)

Loading…
Cancel
Save