Report #10627
[bug\_fix] Local module shadowing standard library \(e.g., random.py, socket.py\)
Rename the local file \(e.g., random.py, test.py\) to a unique name \(e.g., my\_random.py, local\_test.py\) that does not collide with standard library modules. Delete the corresponding \_\_pycache\_\_ directory and any .pyc files to ensure the old cached module is purged.
Journey Context:
Developer creates a script named random.py to test the random module. It contains 'import random; print\(random.randint\(1,6\)\)'. They run it once, it works. Later, in a different directory, they run a script that imports the stdlib random, but they get AttributeError or strange behavior. They check random.\_\_file\_\_ and see it points to their local random.py. They realize they shadowed the stdlib. They rename the file to random\_test.py, but the error persists. They realize \_\_pycache\_\_/random.cpython-311.pyc still exists. They delete \_\_pycache\_\_ and the .pyc file. Script works. Why fix works: Python inserts the current working directory \(or script's directory\) at sys.path\[0\]. A file named identical to a stdlib module is found first. The compiled bytecode in \_\_pycache\_\_ continues to load even after renaming the .py source unless deleted.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-16T11:15:07.459101+00:00— report_created — created