如何正确使用 Path (PyCharm)
how do I correctly use Path (PyCharm)
我正在使用 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(文件 > 默认设置 > 项目解释器)
谢谢!
如果您执行裸导入(即 import pathlib
),则 Path
class 不在脚本的本地命名空间中。它是模块对象 pathlib
的 属性 。在这种情况下要成功访问 Path
,您必须 显式 通过其父对象引用它。即:pathlib.Path
.
此外,我不熟悉 bpython
,但您在终端会话中描述的内容不会出现在 IPython
中。事实上,我认为在 any 交互环境中导入库会隐式导入其所有子对象的设计非常糟糕。第一,它有污染命名空间的风险。第二,它会导致语言的新老用户混淆。
我正在使用 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(文件 > 默认设置 > 项目解释器)
谢谢!
如果您执行裸导入(即 import pathlib
),则 Path
class 不在脚本的本地命名空间中。它是模块对象 pathlib
的 属性 。在这种情况下要成功访问 Path
,您必须 显式 通过其父对象引用它。即:pathlib.Path
.
此外,我不熟悉 bpython
,但您在终端会话中描述的内容不会出现在 IPython
中。事实上,我认为在 any 交互环境中导入库会隐式导入其所有子对象的设计非常糟糕。第一,它有污染命名空间的风险。第二,它会导致语言的新老用户混淆。