2017-06-13 2 views
1

Guter Abend,Python-Skript funktioniert von einem Ordner, aber nicht von Unterordnern.

Ich versuche, einige Maschinen zu tun, mit Python zu lernen, so importierte ich das Modul Scikit-Learn:

from sklearn.preprocessing import MinMaxScaler 

Und es gibt mir diese seltsamen Fehler:

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' 

Die Fehler werden von Anaconda (Spider) kopiert, aber sie sind auch vorhanden, wenn eine Python-Sitzung über die Befehlszeile gestartet wird. Der Ordner, in dem ich das Skript ausgeführt wird:

C:\Users\Francesco\Desktop\script_python 

Das sehr seltsame Sache ist, dass, wenn ich das gleiche Skript aus dem Desktop ausgeführt wird, nur ein Ordner auf, es funktioniert!

C:\Users\Francesco\Desktop\ <-- Here it works!! 

Ich fand heraus, dass das Problem mit dem Multiprocessing-Modul relativ ist, hier eine Momentaufnahme dieses seltsame Verhalten:

Summary of the problem

+0

Haben Sie ein Verzeichnis namens 'multiprocessing' auf dem Desktop (das das 'Multiprocessing'-Modul verbirgt). Sie können versuchen, 'python -c" import multiprocessing; print (multiprocessing .__ dir __) "' –

+0

Oh Gott, ich hatte ein Modul namens multiprocessing in diesem Ordner und ich habe es komplett vergessen! Großartig, poste es als Antwort, ich werde es akzeptieren! – FrAxl93

Antwort

1

Sie wahrscheinlich ein Modul multiprocessing in dem Verzeichnis, in dem Sie ausgeführt werden das Skript von.

Im Allgemeinen hat der Pfad, in dem Sie Ihr Skript ausführen, in Python Vorrang vor dem Python-env, so dass es versucht, dieses zuerst auszuwählen. Dies bedeutet, dass wenn sklearn importiert multiprocessing, es verwendet Ihr Modul, und nicht die integrierte multiprocessing.

Wenn diese Art von Fehlern tritt auf, ein Weg, um den Fehler zu identifizieren, ist

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

zu auszuführen, das Modul verwendet wird.

Verwandte Themen