как правильно использовать Path (PyCharm) - PullRequest
0 голосов
/ 07 сентября 2018

Я использую PyCharm 2018.1.4

Если я напишу

from pathlib import Path
p = Path('.')

все работает нормально.

С другой стороны, если я напишу

import pathlib
p = Path('.')

Я получаю

NameError: name 'Path' is not defined

Я подумал, используя import pathlib Я импортирую всю библиотеку, включая Path .

По сравнению с терминальной сессией:

$ bpython
bpython version 0.17.1 on top of Python 3.6.4 /Users/fanta4/anaconda3/bin/python
>>> import pathlib
>>> p = Path('.')
>>>

без проблем.

И просто питон:

Nick-iMac:~ fanta4$ which python
/Users/fanta4/anaconda3/bin/python

Nick-iMac:~ fanta4$ python
Python 3.6.4 |Anaconda, Inc.| (default, Jan 16 2018, 12:04:33)
[GCC 4.2.1 Compatible Clang 4.0.1 (tags/RELEASE_401/final)] on darwin
>>> import pathlib
>>> p = Path('.')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'Path' is not defined

Где проблема в PyCharm?
В PyCharm я вижу python 3.6 (Файл> Настройки по умолчанию> Интерпретатор проекта)

Спасибо!

1 Ответ

0 голосов
/ 07 сентября 2018

Если вы выполняете пустой импорт (т. Е. import pathlib), класс Path не находится в локальном пространстве имен вашего скрипта. Это атрибут объекта модуля pathlib. Для успешного доступа к Path в этом случае вы должны явно ссылаться на него через его родительский объект. Т.е .: pathlib.Path.

Кроме того, я не знаком с bpython, но то, что вы описали в своем терминальном сеансе, не происходит в IPython. На самом деле, я считаю крайне плохой дизайн, при котором импорт библиотеки в любой интерактивной среде неявно импортирует все ее дочерние объекты. Во-первых, это рискует загрязнить пространство имен. Во-вторых, это вызывает путаницу как у новых, так и у старых пользователей языка.

...