簡體   English   中英

shebang 不適用於 python 腳本

[英]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 樹進行編輯。

pipdoc

我有一個類似的問題,它最終是因為行尾的 CRLF。 這些是在 Windows 機器上創建腳本時添加的。 要檢查是否是這種情況,請使用 file 命令。

file script.py

它會給你一個這樣的輸出。 “Python 腳本,ASCII 文本可執行文件,帶有 CRLF 行終止符”

要刪除 CRLF 行終止符,請執行以下操作。

dos2unix script.py

暫無
暫無

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

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