簡體   English   中英

如何使python腳本可執行?

[英]How do I make a python script executable?

如何使用我自己的命令行名稱(如“myscript”)運行 python 腳本,而不必在終端中執行“python myscript.py”?

  1. 在腳本頂部添加一個 shebang 行:

    #!/usr/bin/env python

  2. 將腳本標記為可執行:

    chmod +x myscript.py

  3. 將包含它的目錄添加到您的PATH變量中。 (如果你想讓它堅持下去,你必須在你的主目錄中的.bashrc.bash_profile中這樣做。)

    export PATH=/path/to/script:$PATH

最好的跨平台方法是創建setup.py ,在其中定義一個入口點並使用pip安裝。

假設您有myscript.py的以下內容:

def run():
    print('Hello world')

然后使用以下內容添加setup.py

from setuptools import setup
setup(
    name='myscript',
    version='0.0.1',
    entry_points={
        'console_scripts': [
            'myscript=myscript:run'
        ]
    }
)

入口點格式為terminal_command_name=python_script_name:main_method_name

最后使用以下命令安裝。

pip install -e /path/to/script/folder

-e代表可編輯,這意味着您將能夠處理腳本並調用最新版本而無需重新安裝

之后,您可以從任何目錄運行myscript

我通常在腳本中這樣做:

#!/usr/bin/python
... code ...

在終端:

$: chmod 755 yourfile.py
$: ./yourfile.py

權限表

有些人可能感興趣的另一種相關解決方案。你也可以直接將 myscript.py 的內容嵌入到 Linux 上的 .bashrc 文件中(我認為應該也適用於 MacOS)

例如,我在 .bashrc 中定義了以下函數,用於將 Python 泡菜轉儲到終端,請注意${1}是函數名稱后面的第一個參數:

depickle() {
python << EOPYTHON
import pickle
f = open('${1}', 'rb')
while True:
   try:
      print(pickle.load(f))
   except EOFError:
      break
EOPYTHON
}

有了這個(並且在重新加載 .bashrc 之后),我現在可以從我計算機上的任何終端或目錄運行depickle a.pickle

我想到的最簡單的方法是使用“pyinstaller”。

  1. 創建一個包含您在代碼中使用的所有庫的環境。
  2. 激活環境並在命令窗口中編寫pip install pyinstaller
  3. 使用命令窗口打開代碼 maincode.py 所在的主目錄。
  4. 記得保持環境活躍並編寫pyinstaller maincode.py
  5. 檢查名為“build”的文件夾,您將找到可執行文件。

我希望這個解決方案可以幫助你。 GL

如果腳本是由使用Nssm工具創建的服務運行的,我已經為找不到命令py -3或任何其他與 pylauncher 命令相關的問題而苦苦掙扎了幾天。
但是當直接從cmd運行時,相同的命令也有效。
解決方案是什么? 只需重新運行 Python 安裝程序,最后單擊禁用路徑長度限制的選項。
我會把它留在這里,這樣任何人都可以使用這個答案並發現它有幫助。
在此處輸入圖片說明

暫無
暫無

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

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