使用Python Windows Launcher时,是否有任何方法可以防止必须键入完整路径?
在Windows 8中,我经常使用Python Windows启动器,如使用Python Windows Launcher时,是否有任何方法可以防止必须键入完整路径?,python,windows,python-3.x,Python,Windows,Python 3.x,在Windows 8中,我经常使用Python Windows启动器,如 py C:/long/long/long/long/long/path/to/prog.py ... 是否有任何方法可以设置一些环境设置,例如PATH或PYTHONPATH等,以防止必须键入到prog.py的完整路径 根据我的基本知识/研究,PATH只对命令行的py部分有帮助,而PYTHONPATH只对prog.py中的导入有帮助,那么我如何处理prog.py本身的路径呢 注: 我不能修改代码,甚至不能修改“sheba
py C:/long/long/long/long/long/path/to/prog.py ...
是否有任何方法可以设置一些环境设置,例如PATH或PYTHONPATH等,以防止必须键入到prog.py
的完整路径
根据我的基本知识/研究,PATH只对命令行的py
部分有帮助,而PYTHONPATH只对prog.py
中的导入有帮助,那么我如何处理prog.py
本身的路径呢
注:
- 我不能修改代码,甚至不能修改“shebang”行,因为它需要在其他平台上工作
- 我无法cd到包含要运行它们的程序的目录,因为这些程序将根据它们运行的目录执行某些操作(它们将修改它们运行的目录中的文件)
- 我知道,如果我将
扩展与Python Windows启动器关联,那么我可以将.py
作为命令行中的第一项运行,并因此使用PATH,但目前我的prog.py
扩展与我最喜欢的编辑器关联,如果可能,我希望保持这种方式(因此我可以双击Windows资源管理器中的任何Python文件并对其进行编辑)。.py
- 但是,如果有人建议一个解决方案,我可以将Windows资源管理器与命令行进行不同的关联,那么这可能是一个潜在的解决方案!(即,在Windows资源管理器中,
通过编辑器打开,而在命令行上,.py
通过Python Windows Launcher运行).py
- 但是,如果有人建议一个解决方案,我可以将Windows资源管理器与命令行进行不同的关联,那么这可能是一个潜在的解决方案!(即,在Windows资源管理器中,
- 回答我自己的问题:事实上,我太傻了。我可以为每个程序路径设置一个变量(只有几个程序路径),即..
prog=C:/long/path/to/prog.py
,然后执行py%prog%…
。我想我找到了一个对我自己的问题可以接受的答案
更新:我刚刚发现了更好的东西。我能做到
doskey prog=py C:/long/path/to/prog.py $*
然后简单地prog…
现在,我只需要做一些疯狂的事情,将doskey命令放入一个文件,该文件将在每次启动控制台时运行,如下所述:将您的长路径添加到
PYTHONPATH
,然后像这样调用您的程序:
python -m prog
Python将搜索名为
prog
的模块,然后将其作为主模块运行。您能不能将cd
放入C:/long/long/long/long/long/path/to/
并运行py prog.py
?我不完全确定问题出在哪里。@eryksun对不起,我应该注意到我的.py文件扩展名与我的fav相关orite编辑器,我希望保持这种方式。(我将用此注释编辑问题。)@Blender很抱歉,程序需要在其他目录中运行,因为它根据运行位置执行操作。我还要将此添加到主要问题中。从shell命令行运行文件和在GUI中双击都会执行默认动词,通常是打开
。脚本的默认操作应该是要执行它。要进行编辑,您可以在右键单击菜单中添加一个命令。否则,您的生活会变得很困难,但我们可能可以使用批处理文件来解决这个问题,该批处理文件在where prog.py
的输出上循环,以获得脚本的完整路径。下面是一个在命令行上运行的简单测试,For/f“delims=“%a in('where/f prog.py')do@py%a
。这将运行当前目录和路径中找到的每个prog.py。嘿,这很有效!这比我找到的解决方案好得多,因为它是通用的。(我找到的解决方案适合我,因为我只有几个路径可以硬编码。)这太棒了。尽管如此,我还是注意到了一个问题。如果prog.py
有一个指定python3的shebang行,那么运行py path/to/prog.py
会自动选择python3,因为Python Windows启动器py
会识别shebang行。但是,如果我以py-m prog
的形式运行它,那么py
将忽略shebang行,因此在默认情况下在python2中运行prog.py
。我最终不得不运行py-3-m prog
。这不是一个交易破坏者,但我想知道是否有更好的解决方案来解决这个问题?我不知道。我的windows机器上只有python 3。对于linux,我只是明确地命名了我想要运行的程序使用.ie.python3-m prog的程序
。大多数linux发行版将python2和python3作为各自版本的python.FYI的别名安装,doskey别名在控制台中实现,即conhost.exe(不是cmd.exe),基于在输入行开始处匹配别名。它们不能一般用作命令,即不在批处理文件中,也不能通过管道传输到(例如,echo input | prog
)。