如何将python脚本放在路径上?

如何将python脚本放在路径上?,python,python-3.x,path,Python,Python 3.x,Path,我知道以前有人问过这个问题。我已经做了几乎所有的建议,但我仍然有一个问题 我有一个脚本文件\u rename\u script.py,我已经将它设置为可执行文件,并且我已经在路径之外进行了测试,以确保它按预期工作,一切正常。但是,当我将该脚本移动到我的路径时,会得到以下结果: /Users/Nick/bin/file_rename_script.py: line 1: import: command not found from: can't read /var/mail/datetime /U

我知道以前有人问过这个问题。我已经做了几乎所有的建议,但我仍然有一个问题

我有一个脚本
文件\u rename\u script.py
,我已经将它设置为可执行文件,并且我已经在路径之外进行了测试,以确保它按预期工作,一切正常。但是,当我将该脚本移动到我的路径时,会得到以下结果:

/Users/Nick/bin/file_rename_script.py: line 1: import: command not found
from: can't read /var/mail/datetime
/Users/Nick/bin/file_rename_script.py: line 4: syntax error near unexpected token `('
/Users/Nick/bin/file_rename_script.py: line 4: `current_directory = os.listdir(os.getcwd())'
以下是文件的外观:

#!/usr/bin/env python3

import os, time
from datetime import datetime

current_directory = os.listdir(os.getcwd())
files = [f for f in os.listdir(os.getcwd()) if os.path.isfile(f)]

for file in files:
    file_name, file_extension = os.path.splitext(file)
    create_date = datetime.fromtimestamp(os.path.getctime(file)).strftime('%Y_%m_%d')
    prompt_user = "What would you like to name " + file + " to? "
    user_response = input(prompt_user)
    if user_response:
        os.rename(file, create_date + "-" + user_response.replace(" ", "_") + file_extension)
        print("Renamed your file to", create_date + "-" + user_response.replace(" ", "_") + file_extension)
        print()
    else:
        print(file, "was not changed")
        print()
为什么它在我的路径上时我不能运行它?另外请注意,我已将shebang设置为
#/usr/local/bin/python3
也没有成功

理想情况下,我希望将此文件保存在其他地方,并将其作为别名符号链接到我的路径上


给出了什么?

错误表明she bang不工作,shell试图直接将您的python代码(/Users/Nick/bin/file\u rename\u script.py)作为shell脚本运行,而不是使用python解释器

  • 首先验证运行
    /usr/bin/env python3
    时是否得到Python提示。如果没有,请运行
    哪个python3

  • 其次,再次检查she-bang行
    #之前是否没有空格或空行。如果要在Windows上创建文件,请保存不带BOM表的文件(这是文件开头的不可见字符)。行必须以新行字符(
    \n
    )结尾。您可以运行
    head
    od
    从文件的第一行打印字节(字符):

    head-1/Users/Nick/bin/file_rename_script.py | od-cx

  • 它应该打印(第一个字符是
    #
    ,最后一个字符是
    \n
    ):


    如果使用windows或linux,则应将python exe位置添加到环境路径

    适用于寡妇和linux 将python exexutable path变量添加到path

    如果使用虚拟环境,请先激活虚拟环境。添加虚拟环境python包路径。例如

    !#环境巨蟒 脚本必须添加到env的上目录中 如果使用虚拟环境,则必须运行env调用env/Scripts/activate 目录结构应该是
    应用程序
    --环境
    --yourscript.py

    通过pip安装虚拟环境。

    尝试在shell中运行
    env python3
    ?运行
    env python3
    时是否会收到python提示?在命令行中运行
    哪个python3
    时会发生什么?错误表明shebang工作不正常,因此shell试图直接以shell脚本的形式运行python脚本,而不是使用python解释器…@GoranRakic我在运行
    env python3
    时确实收到一个提示,
    python3
    给了我
    /usr/local/bin/python3
    。我同意谢邦似乎是罪魁祸首。但是,这些路径是正确的。如果您可以通过运行
    /usr/bin/env python3
    获得Python提示,那么env和Python的一切都很好。尝试运行
    head-1/Users/Nick/bin/file_rename_script.py | od-cx
    并将输出粘贴到此处。此输出显示/Users/Nick/bin/file_rename_script.py缺少第一行。此脚本的第一行不是shebang,而是“import os…”错误表示没有shebang(这是通过直接检查文件(中提供的)确认的)。错误的shebang,例如使用Windows换行符(
    b'\r\n'
    )会导致,而OP的错误表明python脚本是作为shell脚本运行的。我犯了一个错误,没有仔细检查我放在路径上的文件。事实证明。我在路径上放错了文件。
    0000000   #   !   /   u   s   r   /   b   i   n   /   e   n   v       p
               2123    752f    7273    622f    6e69    652f    766e    7020
    0000020   y   t   h   o   n   3  \n
               7479    6f68    336e    000a
    0000027