簡體   English   中英

無法打開文件'demo.py':[Errno 2] 通過 bash 腳本運行時沒有這樣的文件或目錄

[英]Can't open file 'demo.py': [Errno 2] No such file or directory when running through a bash script

我有一個名為test-folder ,里面有兩個文件。

# file name: demo.py
print('hello world')
# file name: script.sh
python3.7 demo.py

test-folder存在於/home/username/Documents/

我已將上述路徑導出到.bashrc

現在,當我嘗試使用以下命令執行 script.sh 時,

bash script.sh

我收到以下錯誤

python3.7: can't open file 'demo.py': [Errno 2] No such file or directory

我該如何解決這個問題? 我在 Ubuntu 18.04

這個對我有用。 你的設置和我的有什么不同嗎?

$ cat demo.py 
print("Hello World")

$ cat script.sh 
python3.7 demo.py

$ tree
.
└── test-folder
    ├── demo.py
    └── script.sh

1 directory, 2 files

$ cd test-folder/
$ bash script.sh 
Hello World

編輯:嘗試以下。

$ cat script.sh
python3.7 "`dirname "$0"`/demo.py"

移動到包含文件的文件夾: $ cd /home/username/Documents/test-folder

在確保您位於包含該文件的文件夾中后,請嘗試:

$ python file_name.py

如果它不起作用,請嘗試 python 的完整路徑和文件的完整路徑,如下所示:

$ /usr/lib/python3.7 /home/username/Documents/test-folder/file_name.py

如果您想在任何地方使用script.sh ,您的方法將行不通。 執行$ bash script.sh時,文件script.sh應位於工作目錄中。

您可以使用絕對路徑來解決此問題:

# filename: script.sh

python3.7  /home/username/Documents/test-folder/demo.py

嘗試使用bash /home/username/Documents/test-folder/script.py執行此操作。

您可以通過將/home/username/Documents/test-folder添加到您的PATH ,將 shebang 添加到demo.py並使demo.sh可執行,以一種可以說更簡單的方式實現您的目標。

$ export PATH=/home/username/Documents/test-folder:$PATH
$ chmod +x /home/username/Documents/test-folder/demo.py

demo.sh看起來像這樣,帶有 shebang:

#!/usr/lib/python3.7

print('hello world')

並且可以使用$ demo.sh從任何地方執行。

如果您的script.sh文件僅用於運行 Python 腳本,則不需要它。 而是使 Python 腳本本身可執行。

(1) 在你的 Python 文件中添加它作為第一行——這告訴 Unix 在運行這個文件時使用哪個解釋器:

#!/usr/bin/env python37

(2) 使您的 Python 文件可執行,以便可以直接運行:

chmod +x demo.py

(3) 將該文件放在路徑上,例如您通過 Bash 配置文件設置的路徑,或者已經在路徑上的路徑,例如/usr/local/bin

現在,只要您發出命令demo.py ,您的腳本就會運行。 注意.py擴展名不是必需的——你可以為文件命名任何你喜歡的名字。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM