我可以从终端访问Python解释器并导入模块,然后从中导入特定名称
python
Python 3.7.1 (default, Nov 28 2018, 11:51:47)
[Clang 10.0.0 (clang-1000.11.45.5)] on darwin
import sklearn
from sklearn.datasets import load_iris
但是,如果我运行的脚本sklearn.py
仅包含:
#!/usr/local/opt/python/libexec/bin/python
import sklearn
from sklearn.datasets import load_iris
或者如果我与脚本位于同一文件夹中,并尝试单独运行import sklearn
或from sklearn.datasets import load_iris
,则会出现以下错误:
Traceback (most recent call last):
File "sklearn.py", line 1, in <module>
import sklearn
File "/Users/Anonymous/Documents/sklearn.py", line 1, in <module>
from sklearn.datasets import load_iris
ModuleNotFoundError: No module named 'sklearn.datasets'; 'sklearn' is not a package
我还可以转到其他文件夹(例如cd Downloads/
),并且能够再次从解释器访问import sklearn
或from sklearn.datasets import load_iris
。
1)当我在同一文件夹中时,似乎脚本的存在比解释器具有优先权
2)我很困惑为什么脚本不能首先导入模块。我认为这可能与我设置PATH的方式有关,因为这有点怪异,但解释器似乎按预期工作。
我在OS X 10.14.1上。我最近使用export PATH="/usr/local/opt/python/libexec/bin:$PATH"
编辑了.bash_profile文件,因此可以更轻松地通过终端访问python的自制版本。我注释掉了Python的OS X默认设置,因此它看起来像这样:
export PATH="/usr/local/opt/python/libexec/bin:$PATH"
# Setting PATH for Python 3.5
# The orginal version is saved in .bash_profile.pysave
#PATH="/Library/Frameworks/Python.framework/Versions/3.5/bin:${PATH}"
#export PATH
# Setting PATH for Python 2.7
# The original version is saved in .bash_profile.pysave
#PATH="/Library/Frameworks/Python.framework/Versions/2.7/bin:${PATH}"
#export PATH
# Setting PATH for Python 3.7
# The original version is saved in .bash_profile.pysave
#PATH="/Library/Frameworks/Python.framework/Versions/3.7/bin:${PATH}"
#export PATH