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

没问题。

只是蟒蛇:

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该类不在脚本的本地命名空间中。它是模块对象的一个​​属性pathlibPath要在这种情况下成功访问,您必须通过其父对象显式引用它。即:pathlib.Path

另外,我不熟悉bpython,但您在终端会话中描述的内容不会出现在IPython. 事实上,我认为在任何交互式环境中导入库都会隐式导入其所有子对象,这是非常糟糕的设计。第一,它有污染命名空间的风险。第二,它会导致新老用户的语言混淆。

于 2018-09-06T21:48:53.133 回答