2016-12-25 2 views
0

ich ein Skript in PyCharm Gebäude (die es script1 rufen lassen), das ein anderes Skript nennt (nennen wir es script2), die Parameter als EingabePyCharm, Import kein Modulnamen, bei der Verwendung von os.system

script2 ist es xlrd (import xlrd) verwenden, wenn ich script2 manuell und geben ihm die benötigten Parameter ausführen, es funktioniert sehr gut

script1, ruft script2 (mit os.system()) wie folgt:

os.system("python script2 -param1 ..") 

und ich bekomme diese Fehlermeldung:

from file script2

import xlrd

ImportError: No module named 'xlrd'

weiß jemand, wie man es beheben? oder es richtig funktionieren lassen?

stellte ich sicher, der Parameter I als Input geben, sind sie sich direkt und xlrd in Projekt-Interpreter

Vielen Dank

+0

tut Dieser Fehler tritt nur in pycharm auf? Wenn Sie script1 manuell ausführen, funktioniert es, oder erhalten Sie den gleichen Fehler? wenn es nicht funktioniert als pycharm hat nichts damit zu tun – DorElias

+0

@DorElias, wenn ich script2 von pycharm ausführen funktioniert es sehr gut –

Antwort

0

Sie rufen wahrscheinlich den falschen Python an. Wenn python script2... von der Befehlslaufleitung funktioniert, verwenden Sie where python den vollständigen Pfad zu bekommen und es verwenden, wenn os.system Aufruf, zum Beispiel:

os.system("c:\pythons7\python script2 -param1 ..") 

(BTW - It is recommended to replaceos.system mit subprocess.call oder einer anderen Teilprozess-Funktion)

+0

das funktioniert !, Ich denke, es war Ursachen, weil ich 2 Installationen habe –

+0

Vielen Dank, ich werde auch erwägen, das 'os.System' zu' call' zu ändern , Vielen Dank –

1

beide Dateien im selben Ordner Stellen Sie sicher, definiert. Hast du mehr als eine Installation/virtualenv von Python?

Eine bessere Option Python-Code RUSE definiert, Funktionen und Importieren von ihnen:

#script2.py 
import xlrd 
def foo(): 
    print("I AM IN FOO NOW!") 

#script1.py 
import script2 
script2.foo() 

Wenn yo sicher sind script2 in einem anderen Prozess aufrufen, betrachten subprocess.check_output als etwas besser API.

+0

ja, sie sind im selben Ordner Ich habe 2 Installationen von Python, Python2.7 und Python3 und Ich will keine Funktion verwenden, ich möchte script2 von script1 aufrufen –

Verwandte Themen