LINUX.ORG.RU

Баг в питоне?

 


1

1

Привет, ЛОР!

Натолкнулся я тут на забавный артефакт. Вкратце, если в директории есть файл, совпадающий по имени со встроенными модулями питона, то некоторые программы пытаются загрузить его вместо встроенного модуля.

Я на это напоролся при использовании pipenv. Например:

~/trash/test> find .
.
./Pipfile.lock
./derp
./derp/__init__.py
./derp/types.py
./Pipfile
/trash/test> pipenv --venv
/home/void/.local/share/virtualenvs/test-qwpSrWlE
~/trash/test> cd derp 
~/trash/test/derp> cat types.py 
raise Exception("Python is retarded")
~/trash/test/derp> pipenv --venv
Fatal Python error: initsite: Failed to import the site module
Traceback (most recent call last):
  File "/nix/store/yf4i32dx953p2dv2agfdyxdwg6ba0l61-python3.7-setuptools-41.0.1/lib/python3.7/site-packages/site.py", line 73, in <module>
    __boot()
  File "/nix/store/yf4i32dx953p2dv2agfdyxdwg6ba0l61-python3.7-setuptools-41.0.1/lib/python3.7/site-packages/site.py", line 26, in __boot
    import imp  # Avoid import loop in Python 3
  File "/nix/store/s5f3vpmig33nk4zyk228q55wdydd3pc2-python3-3.7.3/lib/python3.7/imp.py", line 19, in <module>
    from importlib._bootstrap import _ERR_MSG, _exec, _load, _builtin_from_name
  File "/nix/store/s5f3vpmig33nk4zyk228q55wdydd3pc2-python3-3.7.3/lib/python3.7/importlib/__init__.py", line 57, in <module>
    import types
  File "./types.py", line 1, in <module>
    raise Exception("Python is retarded")
Exception: Python is retarded

Скажи, ЛОР, это вообще нормально? Если нет, то это баг в самом пистоне или это баг в pipenv? Или я чего-то не понимаю и мне просто нельзя называть свои модули types.py, re.py и т.д.?

★★★★★

Последнее исправление: hateyoufeel (всего исправлений: 2)

Ответ на: комментарий от hateyoufeel

Всё модули будут искаться в окружении.
Блииин.... Я протупил.
Конечно, это косячная тема, когда локальный модуль не отличается от глобального по вызову...

Shadow ★★★★★
()
Последнее исправление: Shadow (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.