大家晚上好,
我正在尝试用python进行一些机器学习,所以我导入了模块scikit-learn:
from sklearn.preprocessing import MinMaxScaler
它给了我这个奇怪的错误:
Traceback (most recent call last):
File "<ipython-input-22-b55a4eaccb0b>", line 1, in <module>
from sklearn.preprocessing import MinMaxScaler
File "C:\Users\Francesco\Anaconda3\lib\site-packages\sklearn\preprocessing\__init__.py", line 6, in <module>
from ._function_transformer import FunctionTransformer
File "C:\Users\Francesco\Anaconda3\lib\site-packages\sklearn\preprocessing\_function_transformer.py", line 2, in <module>
from ..utils import check_array
File "C:\Users\Francesco\Anaconda3\lib\site-packages\sklearn\utils\__init__.py", line 18, in <module>
from ..externals.joblib import cpu_count
File "C:\Users\Francesco\Anaconda3\lib\site-packages\sklearn\externals\joblib\__init__.py", line 128, in <module>
from .parallel import Parallel
File "C:\Users\Francesco\Anaconda3\lib\site-packages\sklearn\externals\joblib\parallel.py", line 24, in <module>
from ._multiprocessing_helpers import mp
File "C:\Users\Francesco\Anaconda3\lib\site-packages\sklearn\externals\joblib\_multiprocessing_helpers.py", line 24, in <module>
_sem = mp.Semaphore()
AttributeError: module 'multiprocessing' has no attribute 'Semaphore'
错误是从Anaconda(Spider)复制的,但即使从命令行启动python会话也会出现错误。我运行脚本的文件夹是:
C:\Users\Francesco\Desktop\script_python
非常奇怪的事情是,如果我从桌面运行相同的脚本,只是一个文件夹,它可以工作!
C:\Users\Francesco\Desktop\ <-- Here it works!!
我发现问题与多处理模块有关,这里是这种奇怪行为的快照:
答案 0 :(得分:1)
您可能在运行脚本的目录中有一个模块multiprocessing
。
通常,在Python中,运行脚本的路径优先于Python env,因此它将首先尝试选择该路径。这意味着当sklearn
导入multiprocessing
时,它会使用您的模块,而不是内置的multiprocessing
。
出现此类错误时,识别错误的一种方法是运行
python -c "import multiprocessing; print(multiprocessing.__dir__)"
仔细检查正在使用的模块。