скрипт Python не выполняется при вызове из оболочки - PullRequest
0 голосов
/ 29 октября 2018

У меня есть программа на Python 3 в файле foo файл имеет разрешения на выполнение, и первая строка скрипта -

#!/usr/bin/python3

Когда я запускаю файл напрямую из python, то есть:

/usr/bin/python3 foo 3 boo

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

foo 3 boo
foo: Command not found.

Даже при указании относительного или полного пути к сценарию я получаю тот же ответ.

./foo 3 boo
./foo: Command not found.

/full/path/to/the/file/foo 3 boo
/full/path/to/the/file/foo: Command not found.

Требуется дополнительная информация:

head -2 foo
#!/usr/bin/python3

which python3
/usr/bin/python3

Работа с tcsh, в чем проблема?

Я работаю на удаленном университетском компьютере через ssh, может ли это быть так, что системные администраторы как-то предотвращают это?

Ответы [ 4 ]

0 голосов
/ 29 октября 2018

Предполагается, что ваш скрипт исполняемый и у вас есть python3 в / usr / bin / python3. Я думаю, что вы пытаетесь запустить свой скрипт из раздела, смонтированного с аргументом noexec, чтобы проверить, является ли это проблемой, которую вы должны запустить:

mount | grep <partition> | grep noexec

Если я прав, вы можете просто смонтировать раздел с помощью опции exec или переместить ваш скрипт в другое место.

0 голосов
/ 29 октября 2018

Вы должны указать путь к файлу

./foo

Если вы просто вызовете «foo», оболочка будет искать в переменной среды $ PATH папку, в которой содержится двоичный файл «foo», и он не найдет ее ...

0 голосов
/ 29 октября 2018

Я использую python3, просто пример иллюстрации ..

Просто тестовый скрипт ..

$ cat test.py
#!/python/v3.6.1/bin/python3
import os
print(os.system("ls"))

$ which python3
/python/v3.6.1/bin/python3

Разрешение сделать его исполняемым .. У меня есть сомнения, если скрипт foo исполняется в вашем случае ..

$ chmod +x test.py

Тестовый прогон ..

$ ./test.py
a.py     Backup     File_Write_Method  NWK-old              Python_aritsTest  Python_Ftp   Python_Mail     Python_Primer  test.py
argpass  BASH       Network_DeOps      Python-3.6.3         Python_Dump       Python_FTP   Python_Panda    readme_python  tmp
awk.sh   dnspython  nslookup           Python-3.6.3.tar.xz  Python_excep      Python_ldap  Python_Parsers  Regular_Expr   tt.csv
0

Это может быть проблема с оболочкой, поскольку я воспроизвел оболочку tcsh, и она не запускается ..

$ tcsh
$ ./test
./test: Command not found.

но он запускается, когда я запускаю его, как показано ниже ..

tcsh -c ./test.py
0 голосов
/ 29 октября 2018

Вам необходимо указать абсолютный путь к скрипту. Попробуйте

./foo 3 boo

в том же каталоге, что и скрипт. В противном случае оболочка будет искать в вашем PATH только то, что называется foo, которого не существует.

...