[英]shebang not working for python script
我在stackoverflow上查看了很多答案。 我已經嘗試了一切。 我在 AddressConversion.py python 腳本的頂部有這個。
#!/usr/bin/env python
import argparse
目標是將其作為命令實用程序運行,這意味着我可以鍵入
AddressConversion [options][address]
到目前為止,我會滿足於能夠打字
./AddressConversion [options][address]
我已經完成了 chmod 所以文件是可執行的我已經在文件上運行了 dos2unix 以消除任何隨機的 Windows 字符(這似乎不可能,因為該文件僅在 Ubuntu 上使用過。
我檢查了 python install with which python 結果
/usr/bin/python
我還檢查了哪個 env 並獲得了類似的路徑 當我使用傳統的 python 命令時,腳本可以正常工作。 當我輸入時它也可以正常工作:
usr/bin/env python
它將打開python解釋器。 這些步驟似乎是任何時候有人問這個問題時建議的解決方案。 我收到此錯誤:
./AddressConversion.py: line 1: import: command not found
./AddressConversion.py: line 3: syntax error near unexpected token `('
./AddressConversion.py: line 3: `def init_parser():'
這似乎是試圖將它作為 shell 腳本或其他東西運行。 有什么建議嗎?
創建了一個文件 executeme.py
#!/usr/bin/env python
print("hello")
使其成為可執行文件(可選)
chmod a+x executeme.py
重命名文件
mv executeme.py executeme
立即執行
./executeme
輸出
hello
另一種方法來創建一個setup.py文件,以獲取更多你可以閱讀這里的entry_points
鍵名console_script
中,你可以給執行者和目標模塊格式“NAME =目標”的名義
from setuptools import setup, find_packages
setup(
name='executor',
packages=find_packages(),
install_requires=[,
],
entry_points = {
'console_scripts': [
'executeme=executeme:main',
],
},
)
然后運行命令
pip install -e /path/to/setup.py
在開發模式下從本地 src 安裝,即項目看起來已安裝,但仍可從 src 樹進行編輯。
我有一個類似的問題,它最終是因為行尾的 CRLF。 這些是在 Windows 機器上創建腳本時添加的。 要檢查是否是這種情況,請使用 file 命令。
file script.py
它會給你一個這樣的輸出。 “Python 腳本,ASCII 文本可執行文件,帶有 CRLF 行終止符”
要刪除 CRLF 行終止符,請執行以下操作。
dos2unix script.py
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.