On Windows Powershell, venv folders are unexpectedly importable due to how namespace package and venv works
Dieses Issue hat noch niemand übernommen.
Bewertung
- Schwierigkeit
- 4/5
- Geschätzter Aufwand
- 3-5 Tage
- Anfängerfreundlichkeit
- 35/100
- Issue-Typ
- Bug
- Klarheit
- Größtenteils klar
- Aktivitätsstatus
- Veraltet
- Tech-Stack
- powershell, python
- Bereich
- operating-systems, tooling
Rechercherichtung
Beginne damit, die Windows-PowerShell-Befehle im Bericht auszuführen, und untersuche sys.path, nachdem du eine venv erstellt und aktiviert hast. Vergleiche das Verhalten der venv unter Windows und Linux und ermittle anschließend, wie die Verzeichnisse Include, Lib und Scripts importierbar werden. Die Aufgabe ist erledigt, wenn unbeabsichtigte venv-Verzeichnisse nicht mehr importierbar sind, ohne normale Umgebungsimporte zu beeinträchtigen.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
Bug report
PEP420 introduced implicit namespace package, basically by creating a folder without __init__.py, it is treated as namespace package.
For some reasons, in Windows Powershell, venv added the environment's root folder into sys.path (this behavior was not observed in Linux's venv), e.g.
PS C:\Users\TestUser> python -m venv testenv
PS C:\Users\TestUser> . .\testenv\Scripts\activate
(testenv) PS C:\Users\TestUser> python
Python 3.10.5 (tags/v3.10.5:f377153, Jun 6 2022, 16:14:13) [MSC v.1929 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> sys.path
[
[snip]
'C:\\Users\\TestUser\\testenv',
'C:\\Users\\TestUser\\testenv\\lib\\site-packages'
]
And because of the way namespace package works, you can import some folders that really aren't intended to be importable:
>>> import Include
>>> Include.__path__
_NamespacePath(['C:\\Users\\TestUser\\testenv\\Include'])
>>>
This was a namespace package created from the Include folder in the root of the testvenv folder:
PS C:\Users\TestUser> ls .\testenv\
Directory: C:\Users\TestUser\testenv
Mode LastWriteTime Length Name
---- ------------- ------ ----
d----- 7/18/2022 1:15 PM Include
d----- 7/18/2022 1:15 PM Lib
d----- 7/18/2022 1:15 PM Scripts
-a---- 7/18/2022 1:15 PM 127 pyvenv.cfg
Similarly, you could have imported Lib and Scripts.
Your environment
Python 3.10.5 (tags/v3.10.5:f377153, Jun 6 2022, 16:14:13) [MSC v.1929 64 bit (AMD64)] on win32
- Vorherrschende Sprache
- Python
- Sterne
- 77.2k
- Forks
- 36k
- Ø Merge
- 1 T. 9 Std.
- Gemergte PRs (30 T.)
- 558
Beitragsleitfaden
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus python/cpython
-
docs pending
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 78/100
-
stdlib type-feature
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 78/100
-
stdlib type-feature
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 72/100
-
build type-bug
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 76/100
-
stdlib topic-email type-feature
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 70/100
Ähnliche Issues
-
bug
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 86/100
zostera/django-bootstrap4#894 ·
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 78/100
use-agent-os/agent-os#3276 ·
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 88/100
zephyrproject-rtos/zephyr#119726 ·
-
area/auth bug comp/agent P3 platform/discord type/security
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 88/100
NousResearch/hermes-agent#117848 ·
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 82/100
zilliztech/memsearch#759 ·