«Το σύστημα δεν μπορεί να εντοπίσει το καθορισμένο αρχείο», όταν γίνεται επίκληση subprocess.Popen σε python

ψήφοι
5

Προσπαθώ να χρησιμοποιήσετε svnmerge.py να συγχωνεύσει κάποια αρχεία. Κάτω από το καπό που χρησιμοποιεί python, και όταν το χρησιμοποιώ παίρνω ένα λάθος - «Το σύστημα δεν μπορεί να εντοπίσει το καθορισμένο αρχείο». Οι συνάδελφοι στην εργασία εκτελεί την ίδια έκδοση του svnmerge.py, και python (2.5.2, ειδικά R252: 60911) χωρίς πρόβλημα.

Βρήκα αυτό το link , το οποίο περιγράφει το πρόβλημά μου. Προσπαθώντας αυτό που περιγράφεται εκεί, επιβεβαίωσε Python θα μπορούσε να βρει svn (είναι στο δρόμο μου):

P: \> python 
Python 2.5.2 (R252: 60911, 21η Φεβρουαρίου του 2008, 13:11:45) [MSC v.1310 32 bit (Intel)] για win32 
Τύπος «βοήθεια», «πνευματικά δικαιώματα», «μονάδες» ή «άδεια» για περισσότερες πληροφορίες. 
>>> os εισαγωγής 
>>> i, k = os.popen4 ( svn --version) 
>>> i.close () 
>>> k.readline () 
'Svn, έκδοση 1.4.2 (r22196) \ n' 

Κοιτάζοντας τον κωδικό svnmerge.py, όμως, παρατήρησα για τις εκδόσεις python 2.4 και άνω θα ακολουθούσε μια διαφορετική πορεία εκτέλεσης. Αντί να επικαλούνται os.popen4 () χρησιμοποιεί subprocess.Popen (). Προσπαθώντας να αναπαράγει το σφάλμα:

C: \> python
Python 2.5.2 (R252: 60.911, 21η Φεβρουαρίου του 2008, 13:11:45) [MSC v.1310 32 bit (Intel)] για Win32 Τύπος βοήθεια, πνευματικά δικαιώματα, μονάδες ή άδεια για περισσότερα πληροφορίες.
>>> υπο-εισαγωγή
>>> ρ = subprocess.Popen ( --version svn, stdout = subprocess.PIPE, 
>>> close_fds = False, stderr = subprocess.PIPE)
Traceback (πιο πρόσφατη κλήση τελευταία):
  File , line 1, στο 
  Φάκελος C: \ Python25 \ lib \ subprocess.py, γραμμή 594, στο __init__
    errread, errwrite)
  Φάκελος C: \ Python25 \ lib \ subprocess.py, γραμμή 816, στο _execute_child
    startupinfo)
WindowsError: [λάθους 2] Το σύστημα δεν μπορεί να βρει το καθορισμένο αρχείο
>>>

Προς το παρόν, έχω σχολίασε το 2.4-και υψηλότερης ειδικό κωδικό, αλλά θα ήθελα να βρουν μια κατάλληλη λύση.

Αν δεν είναι προφανής, είμαι ένα πλήρες python αρχάριος, αλλά η Google δεν έχει βοηθήσει. Όλες οι δείκτες;

Δημοσιεύθηκε 30/08/2008 στις 21:24
πηγή χρήστη
Σε άλλες γλώσσες...                            


1 απαντήσεις

ψήφοι
13

Είναι ένα σφάλμα, ανατρέξτε στην τεκμηρίωση τηςsubprocess.Popen . Εκεί είτε θα πρέπει να είναι μια "shell=True"επιλογή, ή το πρώτο επιχείρημα πρέπει να είναι μια ακολουθία ['svn', '--version']. Όπως είναι τώρα, Popenψάχνει για ένα εκτελέσιμο το όνομα, κυριολεκτικά,“svn --version”που δεν βρίσκουν.

Δεν ξέρω για ποιο λόγο θα μπορούσε να λειτουργήσει για τους συναδέλφους σας όμως, αν εκτελείτε το ίδιο λειτουργικό σύστημα και την έκδοση της Python ... FWIW μου δίνει το ίδιο μήνυμα λάθους σε έναν υπολογιστή Mac, και έναν από τους δύο τρόπους που έδωσε διορθώσεις που .

Απαντήθηκε 30/08/2008 στις 21:34
πηγή χρήστη

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more