Python 2.6 на CentOs проблемы после установки - PullRequest
1 голос
/ 17 января 2012

Я недавно учил себя Python, и мне попался пример, в котором str.endswith принял кортеж в качестве первого аргумента, который 2.4 не поддерживает. Я решил попробовать установить более новую версию Python на мою машину, чтобы быть в курсе. Машина CentOs5.

Как мой пользователь на машине (не root), я извлек пакет отсюда: http://www.python.org/ftp/python/2.6.7/, распаковал его, сделал ./configure --prefix = / home / myusername / python / compiler / Python-2.6. 7-установленный, затем запустил make, make test (все в порядке) и, наконец, сделал altinstall для хорошей меры (я знаю, что делать altinstall не нужно, так как я указал префикс, но на самом деле не хочу нарушать обычный python на эта машина). Когда это сначала не сработало, я попробовал make altinstall от имени root, но это не имело значения.

Когда я пытаюсь запустить скрипт для бинарного файла, я просто получаю кучу слов:

./compiler/Python-2.6.7/Lib/test/test_re.pyc :   onXtd}|iti|iddddgdS(Nsu"     [\u002E\u3002\uFF0E\uFF61]"sa.b.cR$RHRX(R0RÑRÚR        RRY(R                                                                                                                                             R7((s@/home/yspendiff/python/compiler/Python-2.6.7/Lib/test/test_re.pyttest_bug_931848as
Cstidd}|i|iid|it|itidd}|i|i     id|i|i  ddS(Ns\ssa bii(ii(ii(
StopIterationRºRR(R                                          RRÓR       tnextRR4t
Rº((s@/home/yspendiff/python/compiler/Python-      2.6.7/Lib/test/test_re.pyttest_bug_581080js
 cCsatidd}|i|iid|i|iid|it|idS(Ns.*tasdfii(ii(ii(RRÓR     RÝRR4RÞ(R

и, возможно, более уместно много таких строк:

./compiler/Python-2.6.7/Lib/test/test_unicode.py :           self.assert_(u'asdf' not in '')
./compiler/Python-2.6.7/Lib/test/test_unicode.py :           self.assert_('asdf' not in u'')
./compiler/Python-2.6.7/Lib/test/test_unicode.py :           self.assert_(u'asdf' not in u'')
./compiler/Python-2.6.7/Lib/test/test_re.py :           iter = re.finditer(r".*", "asdf")
./compiler/Python-2.6.7/Lib/test/string_tests.py :           self.checkequal(True,  'asdf', '__contains__', 'asdf')
./compiler/Python-2.6.7-installed/lib/python2.6/test/test_unittest.py :               loader.loadTestsFromNames(['sdasfasfasdf'])
./compiler/Python-2.6.7-installed/lib/python2.6/test/test_unittest.py :               self.assertEqual(str(e), "No module named sdasfasfasdf")

Это всего лишь несколько случайных строк из сотен. Я не возился ни с одним из параметров по умолчанию, не выбрал ли я забавную версию или не указал несколько забавных параметров компиляции. Как мне его отключить, чтобы я мог спокойно писать код!

Код ниже, если кому-то интересно. Я просто называю это с помощью ./Findword.py asdf:

#!/home/myusername/python/compiler/Python-2.6.7-installed/bin/python2.6

### FindWord.py

import os                                 # for curdir()            #(A)
import os.path                            # for join(), isfile()    #(B)
import sys                                # for argv[], exit()      #(C)


if len( sys.argv ) != 2:                                            #(D)
    print "need a word or a single-quoted phrase to search for"     #(E)
    sys.exit(1)                                                     #(F)

def searchInFile( pattern, dirname, filenames ):                    #(G)
    for name in filenames:                                          #(H)
        name = os.path.join( dirname, name )                        #(I)
        if os.path.isfile( name ) and not name.endswith(('.pdf','.pl')):   #(J)
            FH = open( name, 'r' )                                  #(K)
            for eachline in FH:                                     #(L)
                if ( eachline.find( pattern ) != -1 ):              #(M)
                    print name, ':  ', eachline                     #(N)

os.path.walk( os.curdir, searchInFile, sys.argv[1] )                #(O)

1 Ответ

2 голосов
/ 17 января 2012

В основном происходит то, о чем вы просите Python. Вы говорите ему найти слово «asdf» из того, что находится в вашем текущем каталоге, оно находит его в двоичных файлах.

...