![](/img/trans.png)
[英]Making Python scripts run on Windows without specifying ".py" extension
[英]Distributing Python scripts without .py extension
如果我正在用Python編寫一個用於分發的包,並且我在setup.py
的scripts
中將一些腳本視為可執行文件,是否有一種標准方法可以使它們沒有* .py擴展名? 僅僅制作沒有.py擴展名的文件,還是需要額外的東西? 是否會從文件名中刪除.py,這會破壞與setup.py
/ distutils等Python工具相關的任何功能? 謝謝。
僅當您要導入模型AFAICT時才需要.py
擴展名。 請記住, pip
, easy_install
等只是可執行文件,頂部是shebang。 唯一依賴文件擴展名執行的操作系統是Windows。
如果你需要Windows兼容性,那么要么不刪除.py
擴展名,要么使用setuptools的entry_points
選項自動生成適合系統腳本的文件,例如,將pip.main()
函數安裝為腳本, pip
在setup.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解釋器執行:
$ python nameofyourscript
#!/usr/bin/env python
。 通過在每個腳本中包含一個shebang,您可以將文件命名為您想要的任何內容。
如果不執行其中一項操作,腳本將作為正常腳本執行,適用於您正在使用的任何shell。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.