繁体   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