echo $PATH 顯示 python 腳本的路徑,但無法執行

echo $PATH 顯示 python 腳本的路徑,但無法執行

我是使用 shell 的新手,想要建立目錄,在$HOME其中放置所有 python 腳本,設定該目錄的路徑,以便我可以進入 Mac 上的任何資料夾並在某些檔案上執行這些腳本,腳本不必包含在與用作這些腳本的輸入的檔案相同的目錄中。

我已閱讀周圍並將其添加到我的.zshrc文件中:

export PATH="$HOME/python_functions/bin:$PATH"

sleep_plotter.py然後我添加了一個名為to 的腳本python_functions/bin,這也是我計劃放置所有未來腳本的地方。

但是,當我導航到包含要用作該腳本的輸入的文本文件的資料夾並鍵入 時(python sleep_plotter.py 113testCtM113.txt最後一個參數是腳本的文本文件輸入),我收到以下錯誤訊息:

python: can't open file 'sleep_plotter.py': [Errno 2] No such file or directory

但是當我使用 呼叫路徑時echo $PATH,我看到了:

/Users/myname/python_functions/bin: 

sleep_plotter.py由此,我了解到,當我執行 Python 命令時,python 正在該目錄中查找,因此即使我位於不包含此文件的不同資料夾中,它也應該能夠運行。

我使用的是 Mac OSX 10.11.2、zsh 和 Anaconda 2.3.0。

答案1

PATH變數定義執行指令時搜尋的目錄。但是,當您執行 時python sleep_plotter.py 113testCtM113.txt,是程式(命令)sleep_plotter.py的一個參數。 pythonShell 使用PATHfind python,但不使用它的參數。

您可以為腳本新增可執行屬性:

$ chmod +x /Users/myname/python_functions/bin/sleep_plotter.py

添加一個舍邦序列到 Python 腳本的頂部(第一行):

#!/usr/bin/env python

並直接作為命令運行腳本:

$ sleep_plotter.py 113testCtM113.txt

答案2

如果你想擴充 python 來搜尋其他目錄,那麼你需要做兩件事:設定 PYTHONPATH 變數並使用-mPython 中的選項。

在(注意那裡~/.zshrc沒有):$PATH

export PYTHONPATH="$HOME/python_functions/bin"

並在終端使用:

python -m sleep_plotter 113testCtM113.txt

這與您之前輸入的內容一樣多,因為您必須省略.pypython 檔案的副檔名。

相關內容