2013-08-04 3 views
0

Это происходит в питона сборки:os.system не найти файл, который на самом деле там

#is it executable 
print os.access("support/d8/d8", os.X_OK) 
#is it there in the shell 
os.system("test -f support/d8/d8 && echo \"found\" || echo \"not found\"") 

, а затем:

#run it 
os.system("support/d8/d8 --trace_exception with a bunch of files"); 

, который выводит:

True 
found 
sh: 1: support/d8/d8: not found 

Я не» Получить его. Там он исполняемый. Почему это не так, когда я начинаю.

+1

Что такое содержание 'support/d8/d8'? Обратите внимание, что 'not found' также может означать, что интерпретатор или библиотека не могут быть найдены или инициализированы. – phihag

+0

Это двоичная версия v8. – albertjan

+0

Почему бы не использовать 'subprocess.Popen'? Это должно быть более надежным для такого типа вещей. –

ответ

3

Вы используете исполняемый файл x86_32 бит d8 (несмотря на то, что, кстати, comment). Если система (Travis) является 64, и/или не имеет всех x86_32 библиотек

  • linux-gate.so.1
  • libpthread.so.0
  • libstdc++.so.6
  • libm.so.6
  • libgcc_s.so.1
  • libc.so.6

, тогда исполняемый файл не будет запущен, так как загрузчик не может найти все необходимые библиотеки. Постройте статически и/или для x64.

+0

Спасибо. Я рассмотрю создание статического x64 v8. – albertjan

+0

Вы были правы! – albertjan

0

Почему бы вам не попробовать это:

os.system("./support/d8/d8 --trace_exception with a bunch of files"); 

У меня была аналогичная проблема, в то время как выполнение ./ - это как-то необходимо.

+0

попробовали, что – albertjan

+1

-1 Это идентично 'system ('support/d8/d8 ...')' на любой системной системе. Скорее всего, вы выполняли файл без каких-либо слэш в нем, который действительно имеет другую семантику. – phihag

+0

Плохо, это то же самое.Да, я попробовал файл без косой черты и пришел к выводу, что это может быть проблемой. – innosam

0

Если файл "Поддержка/d8/d8" имеет несуществующие "бах линия", то эта ошибка возникает

$ cat support/d8/d8 
#!/usr/bin/thisdoesnotexist 
echo "hello" 
$ chmod 755 support/d8/d8 
$ python 
Python 2.7.3 (default, Apr 10 2013, 06:20:15) 
[GCC 4.6.3] on linux2 
Type "help", "copyright", "credits" or "license" for more information. 
>>> import os 
>>> os.system("support/d8/d8 --wer") 
sh: 1: support/d8/d8: not found 
32512 

+0

d8 - это двоичный файл – albertjan

Смежные вопросы