如何将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
#之前是否没有空格或空行代码>。如果要在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