2017-06-13 21 views
1

こんばんはみんな、私のpythonを学習いくつかのマシンを実行しようとしていPythonスクリプトは、1つのフォルダからは動作しますが、サブフォルダからは動作しません。

ので、私はscikit学習モジュールをインポート:

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!! 

私はこの問題は、ここでは、この奇妙な行動のスナップショットマルチプロセッシングモジュールに相対的であることが判明:

Summary of the problem

+0

デスクトップ上に( 'multiprocessing'モジュールを隠している)' multiprocessing'というディレクトリがありますか?あなたは '' python -c」のインポート・マルチプロセッシング; print(マルチプロセッシング.__ dir __)を実行することができます。 " –

+0

ああ、私はそのフォルダ内のマルチプロセッシングという名前のモジュールを持っていました。素晴らしい、私はそれを受け入れる答えとして投稿する! – FrAxl93

答えて

1

あなたはおそらくあなたが実行されているディレクトリにモジュールmultiprocessingを持っていますからのスクリプト。

一般に、Pythonでは、スクリプトを実行するパスがPythonのenvよりも優先されるため、最初にそのパスを選択しようとします。つまり、sklearnmultiprocessingにインポートすると、モジュールが使用され、組み込みのmultiprocessingでは使用されません。

このタイプのエラーが表示されたら、エラーを識別するための一つの方法は、モジュールが使用されている二重のチェックに

python -c "import multiprocessing; print(multiprocessing.__dir__)" 

を実行することです。

関連する問題