2016-03-22 7 views
0

ich gearbeitet habe mit Python die harte Tour lernen, und ich bin am Beispiel stecken 48. In Beispiel 47 hatte ich Verzeichnisse zu erstellen, die wie folgt aussehen:Anfügen PythonPath, Module aus verschiedenen Verzeichnissen auf Windows importieren

skeleton 
|--ex47 
    |--module.py 
    |--__init__.py 
|--tests 
    |--ex47_tests.py 
    |--__init__.py 

Von jetzt an musste ich ex47/module.py in tests/ex47_tests.py importieren. Ich habe den Fehler 'Kein Modul namens ex47' erhalten. Die Lösung für dieses Problem war Pfad der ex47 Verzeichnis Website-Pakete hinzufügen, indem Sie zwei Codezeilen in module.py:

import sys 
sys.path.append('./ex47') 

Und das hat gut funktioniert. Ich könnte module.py in ex47_tests.py importieren und ich kann es überall auf meinem Computer importieren.

Nach dem Verschieben von Beispiel 48 habe ich genau die gleichen Verzeichnisse, Dateien erstellt, ich habe den Pfad zu ex48/hinzugefügt und erhalte weiterhin die 'No module named 48'. Ich suchte im Internet nach verschiedenen Lösungen, keiner von ihnen funktioniert. Hinzufügen von __init__.py in das Skelett hilft nicht.

Dieses Problem ist super grundlegende Sache, jedoch wird es nicht in neue Python-Programmierer eingeführt. Übrigens möchte ich eine Lösung, die auf jedem Computer funktioniert, der mit meinem Code arbeiten würde.

Treten solche Probleme in Linux auf?

Antwort

3

Alles, was Sie sehen müssen, ist, woher Sie das Python-Programm aufrufen. Ich habe folgende Dateien.

C:\Users\kumarvivek\Desktop>tree /f skeleton 
Folder PATH listing for volume ???? 
Volume serial number is 6AE1-4919 
C:\USERS\KUMARVIVEK\DESKTOP\SKELETON 
│ __init__.py 
│ 
├───ex47 
│  mod.py 
│  mod.pyc 
│  __init__.py 
│  __init__.pyc 
│ 
└───tests 
     ex47_tests.py 
     __init__.py 


C:\Users\kumarvivek\Desktop> 

Mit folgendem Inhalt:

C:\Users\kumarvivek\Desktop>type skeleton\ex47\mod.py 
import os 
x = "C:\\Users\\kumarvivek\\Desktop\\skeleton\\ex47\\module.py" 
directoryPath= os.path.dirname(x) 
fileName = os.path.basename(x) 
print "\nFilePath:  %s\nDirectoryPath: %s\nFileName:  %s\n" %(x, directo 
ryPath, fileName) 
C:\Users\kumarvivek\Desktop> 

Und

import sys 

# If the Current Working directory is skeleton 
# C:\Users\kumarvivek\Desktop\skeleton>python C:\Users\kumarvivek\Desktop\skeleton\tests\ex47_tests.py 
# 
# sys.path.append(r"..\skeleton") 

# If the Current Working directory is any of these "tests" or "ex47" 
# C:\Users\kumarvivek\Desktop\skeleton\tests>python C:\Users\kumarvivek\Desktop\skeleton\tests\ex47_tests.py 
# C:\Users\kumarvivek\Desktop\skeleton\ex47> 
# 
# sys.path.append(r"..\..\skeleton") 

sys.path.append(r"..\..\skeleton") 


from ex47 import mod 

print mod.x , mod.directoryPath, mod.fileName 
+0

die gut funktioniert. Danke vielmals. – oshiri