簡體   English   中英

分發沒有.py擴展名的Python腳本

[英]Distributing Python scripts without .py extension

如果我正在用Python編寫一個用於分發的包,並且我在setup.pyscripts中將一些腳本視為可執行文件,是否有一種標准方法可以使它們沒有* .py擴展名? 僅僅制作沒有.py擴展名的文件,還是需要額外的東西? 是否會從文件名中刪除.py,這會破壞與setup.py / distutils等Python工具相關的任何功能? 謝謝。

僅當您要導入模型AFAICT時才需要.py擴展名。 請記住, pipeasy_install等只是可執行文件,頂部是shebang。 唯一依賴文件擴展名執行的操作系統是Windows。

如果你需要Windows兼容性,那么要么不刪除.py擴展名,要么使用setuptools的entry_points選項自動生成適合系統腳本的文件,例如,將pip.main()函數安裝為腳本, pipsetup.py指定:

  entry_points=dict(console_scripts=['pip=pip:main', 
          'pip-%s=pip:main' % sys.version[:3]]),

即使你不需要Windows兼容性,使用entry_points也是有意義的,因為它會為你生成指向特定python解釋器的正確shebang(通用#! /usr/bin/env python是錯誤的)。

如果要從命令行執行腳本, .py擴展名實際上不會為您執行任何操作。 在兩種情況下,腳本將使用Python解釋器執行:

  1. 你明確表示要在命令行執行此操作: $ python nameofyourscript
  2. 你明確表示這樣做是通過在指向Python的腳本頂部包含一個shebang來實現的。 首選版本是#!/usr/bin/env python

通過在每個腳本中包含一個shebang,您可以將文件命名為您想要的任何內容。

如果不執行其中一項操作,腳本將作為正常腳本執行,適用於您正在使用的任何shell。

暫無
暫無

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

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