2013-03-21 38 views
1

我想在DOS命令行(或.bat文件)用这样的语法调用Python脚本:Python调用命令行上指示的脚本是否存在路径?

C:\python27\python myscript.py 

脚本,myscript.py位于一个目录,c:\a_process\python_lib。我将能够让Python通过搜索路径来找到该脚本,以便当我的当前目录是任意的时候可以调用它(如C:\junk)。我的问题是,我找不到Python用于Python调用命令行上指示的脚本的路径(如果有)。我搜索了Python文档,SO和网页,但实际上并没有发现任何有用的信息。 (我发现了很多关于Python本身的命令行解析的东西,这不是我正在寻找的东西)。

我有一个adt_python_lib.pth文件中C:\Python27\Lib\site-packages目录,并验证了它的工作原理(我可以导入设在那里的模块。)作为一个实验我曾尝试也设置PYTHONPATH环境变量(验证通过在DOS shell中键入SET,看到。输出线

PYTHONPATH=C:\a_process\python_lib 

对于什么是值得的,我也援引Python和做了sys.path,我可以看到,确实C:\a_process\python_lib路径被列为预期:['', 'c:\\a_process\\python_lib', ...]

我发现的最接近的SO问题是Executing python program

这似乎暗示(但没有声明)没有路径搜索Python调用命令行中指示的文件。如果有人可以权威地声明这是正确的,那么我会恢复到另一个替代方案(可能只需将c:\a_process\python_lib添加到%PATH%并直接调用该脚本)。

+0

谢谢,但我没有看到任何行为改变。我确定PATH中的分号后没有空格,并且我尝试过并且没有尾随分号(另一个SO线程告诫了这些)。我可以告诉我已经正确地添加了PATH,因为现在在DOS命令行上键入myscript.py确实会调用脚本(这是“另一种替代方法”,如果所有其他方法都失败,我会恢复原样)。我所希望的是一个类似于使用.pth文件的解决方案,它应该更易于我们分发(无需注册表设置等) – 2013-03-21 19:11:30

+0

我一直认为PYTHONPATH会覆盖这一点,但显然它只适用于'import'语句。 – 2013-03-21 19:28:15

回答

1

而不是指定完整的文件名,只需使用-m开关指定模块。

C:\python27\python -m myscript 

这里假定该目录是你的PYTHONPATH环境变量的一部分。

+0

这确实有用!谢谢。我之前遇到的问题是我包含了.py扩展名。省略扩展可解决问题。 – 2013-03-21 19:55:02

0

我不相信你可以做你想要什么,但是......

尝试在.bat结束了你的Python命令,并把该bat文件某处你PATH。然后,您可以从任何地方调用.bat(只要确保在指定要在BAT文件中运行的python脚本的位置时使用绝对路径)。

相关问题