簡體   English   中英

如何安裝和運行 python 腳本

[英]How do I install and run a python script

這是 python 的終極菜鳥問題——但我之所以這么問,是因為我根本無法在互聯網上的任何地方找到答案。

如何安裝和運行 python 腳本?

例如,說這個回購: https ://github.com/TineKolenik/hoffman_reproduction


我嘗試了以下方法: pip3 install -r requirements.txt
但后來我得到一頁錯誤,其開頭是:

 Successfully uninstalled numpy-1.22.4 Running setup.py install for numpy ... error ERROR: Command errored out with exit status 1: command: /Library/Frameworks/Python.framework/Versions/3.9/bin/python3.9 -u -c

'導入系統,設置工具,標記化; sys.argv[0] = '"'"'/private/var/folders/_n/dj0hlyp12xz_c2_9pjwgktt00000gn/T/pip-install-btfk24yw/numpy/setup.py'"'"'; file ='"'"'/private/var/folders/_n/dj0hlyp12xz_c2_9pjwgktt00000gn/T/pip-install-btfk24yw/numpy/setup.py'"'"';f=getattr(tokenize, '"'"'open' "'"', open)( file );code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"'); f.close();exec(compile(code, file , '"'"'exec'"'"'))' install --record /private/var/folders/_n/dj0hlyp12xz_c2_9pjwgktt00000gn/T/pip-record-ffl_swjt /install-record.txt --single-version-externally-managed --user --prefix= --compile --install-headers /Users/kris/Library/Python/3.9/include/python3.9/numpy cwd: /private/var/folders/_n/dj0hlyp12xz_c2_9pjwgktt00000gn/T/pip-install-btfk24yw/numpy/ 完整輸出(5277 行):從 numpy 源目錄運行。

 Note: if you need reliable uninstall behavior, then install with pip instead of using `setup.py install`: - `pip install .` (from a git repo or downloaded source release)

pip3 install . 返回:

默認為用戶安裝,因為普通站點包不可寫錯誤:目錄“。” 不可安裝。 未找到“setup.py”和“pyproject.toml”。

python3 main.py給出:

回溯(最近一次通話):文件“/Users/kris/Projects/hoffman_reproduction/main.py”,第 3 行,在 import matplotlib.pyplot as plt ModuleNotFoundError:沒有名為“matplotlib”的模塊


我過去曾嘗試過運行 python 包,但從未設法讓一個包運行。

請幫助我完成安裝和運行這個 repo 所需的基本命令 - 或者選擇另一個 python repo,如果這個 repo 有問題的話。

在 Python 中,您不必安裝任意腳本(例如您引用的 git 存儲庫)。

幾個通用指針:

  • Python 是一種基於解釋器的語言,安裝在您的機器上。 它實際上是一個可執行文件。 可以通過將一段特定的 python 代碼(例如.py文件)輸入到你的 python 安裝中來運行它。 我猜您使用的是 Mac,因此在命令行中運行“python3 file.py”將執行 python,然后執行file.py
  • Python 是非常可擴展的。 它由許多提供功能的packages組成。 然后可以將此功能導入您自己的代碼中(使用import package_name )。 Python 帶有許多內置包(例如mathtypingre )。
  • 您可以使用pip將包添加到您的 Python 安裝中。 Pip 是一個命令行工具,用於管理(例如查找、安裝、卸載、更新)python 包。 人們傾向於安裝的眾所周知的軟件包是numpypandasrequests

了解這一切后,使用 Python 會帶來挑戰。 執行 python 代碼取決於運行它的機器的 Python 本身的安裝。 例如,在我的 Python 安裝中,我安裝了一個用於 Python 腳本的包。 該腳本在我的機器上運行良好。 但是,如果要運行此腳本(並且沒有安裝該腳本所依賴的特定軟件包),它將ModuleNotFound錯誤而慘遭失敗。 因此,我們需要一種方法來傳達腳本所具有的依賴關系。

這就是requirements.txt出現的地方。它描述了在你的 Python 安裝中必須安裝哪些包(以及哪個版本!)。 然后,您可以使用pip安裝所述軟件包,之后您應該能夠運行腳本。

你的情況

您找到了一些要運行的 python 腳本。 請注意,這不是需要安裝的包,您只想運行main.py 但是,這段代碼已經有 4 年的歷史了(就 IT 年而言,這是一個很長的時間)。 具體來說,在我看來,當時 Python 3.5 是最新的(現在我們是 3.10,你正在運行 3.9,順便說一句,這完全沒問題)。 這很重要,因為並非所有內容都向后兼容。

我提出這個的原因如下; 您正在嘗試(正確!)安裝requirements.txt ,以確保在此腳本使用的 Python 安裝中安裝了正確的包。 但是,這些包的版本相當舊,不能保證在較新的 Python 安裝上工作。 這正是這里的情況。

您已經在 Python 安裝中安裝了該軟件包(請參閱Successfully uninstalled numpy-1.22.4 ),為了嘗試安裝舊版本(來自requirements.txt :1.14.3),它已為您卸載pip 該版本與您的 python 安裝不兼容。

幸運的是,您不需要舊版本。 我為您測試了它,您可以使用當前版本的依賴項運行腳本。

其次,您嘗試將腳本安裝為一個包(使用pip3 install . )。 這告訴pip (或 pip3,在您的情況下)在當前工作文件夾中查找可安裝包並將其添加到您的 python 安裝中。 那是行不通的,因為這個腳本不是一個包。 我希望這現在很清楚:)

如何運行你的腳本? 嘗試以下命令:

  1. pip3 install numpy
  2. pip3 install matplotlib
  3. python3 main.py -> 這必須從您的工作文件夾中執行(例如 main.py 所在的位置,否則您可以執行python3 /full/path/to/main.py

更一般的說明

安裝了各種軟件包后,您的 python 安裝可能會變得“臟”。 這會導致某些腳本無法正常工作,盡管您已經正確安裝了所有依賴項。 例如,您安裝的另一個軟件包可能會干擾其中一個依賴項,從而導致意外的副作用。

為了緩解這個問題,Python 提出了“虛擬環境”的概念。 這基本上為您的 Python 安裝(沒有用戶安裝的包)制作了一個干凈的副本,供您使用。這在與多個用戶在同一個項目上工作並且您希望確保每個人都運行相同的 Python 安裝時特別方便。

這對您將來也有幫助,所以我分享它以防萬一(盡管它與您最初的問題有點偏離主題)。

要創建虛擬環境,我們可以使用以下命令; python3 -m venv venv這會在你當前的文件夾中創建一個文件夾venv ,它有自己的 Python 安裝(包括它自己的 pip!)。 但是,當使用python3 main.py時,被調用的 python 仍然是您的“全局”python 安裝。 要開始使用新的“虛擬”python 安裝,您需要激活它: source venv\bin\activate您將看到您的命令行將以(venv) -現在您將在運行python file.py時使用干凈的 python 安裝python file.py 如果您現在使用pip install numpy ,它會將其安裝到虛擬環境中,而不是在您的全局 python3 安裝中。

編輯:另外一件事是 MacOS 特有的; 你有pythonpython3可供你(全局)使用,第一個將引用 python2 並且不應該使用。 但是,如果你制作了一個虛擬環境,你可以使用其中之一,並且兩者都指向虛擬 python 安裝。

暫無
暫無

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

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