[英]Snowboy and Python - when testing demo.py bash chooses wrong file directory?
[英]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.