0

私は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('.')
>>>

問題なし。

そしてちょうどpython:

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 が表示されます ([ファイル] > [デフォルト設定] > [プロジェクト インタープリター])。

ありがとう!

4

1 に答える 1

2

ネイキッド インポート (つまりimport pathlib) を行う場合、Pathクラスはスクリプトのローカル名前空間にありません。モジュールオブジェクトの属性pathlibです。Pathこの場合に正常にアクセスするには、親オブジェクトを介して明示的に参照する必要があります。すなわち: pathlib.Path.

また、私は に慣れてbpythonいませんが、端末セッションで説明したことは では発生しませんIPython実際、インタラクティブな環境でライブラリをインポートすると、そのすべての子オブジェクトが暗黙的にインポートされるのは、非常に貧弱な設計だと思います。第一に、名前空間を汚染するリスクがあります。第二に、言語の新しいユーザーと古いユーザーの両方に混乱を引き起こします。

于 2018-09-06T21:48:53.133 に答える