shebang不适用于python脚本

时间:2018-04-10 07:55:48

标签: python shebang

我在stackoverflow上一直在寻找很多答案。我一切都尝试过。我在AddressConversion.py python脚本的顶部有这个。

#!/usr/bin/env python
import argparse

目标是将其作为命令实用程序运行,这意味着我可以键入

AddressConversion [options][address]

截至目前,我愿意接受输入

./AddressConversion [options][address]

我已经完成了chmod,因此文件是可执行的 我在文件上运行dos2unix以消除任何随机的Windows字符(这似乎不可能,因为该文件仅用于Ubuntu。

我已经检查了python安装与哪个python结果

/usr/bin/python

我还检查了哪个环境并获得了类似的路径 当我使用传统的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脚本或其他东西运行。 有什么建议吗?

2 个答案:

答案 0 :(得分:1)

创建了一个文件executeme.py

#!/usr/bin/env python
print("hello")

将其设为可执行文件(可选)

chmod a+x executeme.py

恢复文件

mv executeme.py executeme

立即执行

./executeme

输出

hello

创建一个setup.py文件的另一个选项,您可以阅读hereentry_points中,一个密钥名称console_script,您可以在其中以格式提供执行程序和目标模块的名称 '名称=目标'

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

答案 1 :(得分:1)

我有一个类似的问题,它的结尾是由于行尾的CRLF。这些是在Windows计算机上创建脚本时添加的。要检查是否存在这种情况,请使用file命令。

file script.py

它将给您这样的输出。 “ Python脚本,ASCII文本可执行文件,带有CRLF行终止符”

要删除CRLF线路终止符,请执行以下操作。

dos2unix script.py