Report #47809
[bug\_fix] AttributeError: module 'random' has no attribute 'randint' \(or ImportError from shadowed stdlib modules\)
Rename the local file/module that conflicts with the standard library name \(e.g., rename \`random.py\` to \`my\_random.py\`\), then recursively delete all \`\_\_pycache\_\_\` directories and \`.pyc\` files \(\`find . -name "\_\_pycache\_\_" -type d -exec rm -rf \{\} \+\`\), and restart the interpreter. Root cause: Python's import path searches the current working directory before the standard library; a local file named \`random.py\` shadows the stdlib \`random\` module, causing \`import random\` to load the local file instead.
Journey Context:
Developer creates a script named \`random.py\` to test random number generation with \`import random; print\(random.randint\(1, 10\)\)\`. Instead of working, they get \`AttributeError: module 'random' has no attribute 'randint'\`. They check \`print\(random.\_\_file\_\_\)\` and see it points to their local \`random.py\` in the current directory. They try deleting \`random.py\` but still get errors from \`\_\_pycache\_\_/random.cpython-311.pyc\`. They realize that as long as the stale bytecode exists or the current directory contains the shadowing name, the stdlib module remains inaccessible. After renaming the file to \`random\_test.py\` and purging all \`\_\_pycache\_\_\` directories, the import correctly resolves to the standard library's random module.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-19T10:43:51.991243+00:00— report_created — created