您好,我正在尝试在Windows的Powershell中使用django学习Python,以创建一个简单的CRUD应用程序,但对设置和使用有一些疑问。

我已设置路径环境变量,以包含指向包含测试.py脚本的文件夹的路径,我认为该脚本允许我直接从Powershell中的c:\运行,但是当我尝试使用以下方式运行示例时:

c:\> python test1.py
c:\> python .\test1.py


它不起作用,我得到:

c:\ Python27 \ python.exe:无法打开文件'。\ test1.py':[错误2]没有此类文件或目录

但是,如果我先CD到路径并运行,它就可以正常工作,并且我在powershell窗口本身中获得了输出:

c:\> cd c:\Python27\Scripts
c:\Python27\Scripts> python test1.py


另外,如果我只是从根c:\提示符下键入脚本名称,例如:

c:\> c:\Python27\Scripts\test1.py
c:\> test1.py


它通过打开一个dos框来运行脚本,该框在运行脚本并完成后立即关闭。

这些方法之间有什么区别,以一种方式或另一种方式运行脚本是否存在问题?

最佳答案

这里的问题是在第一种情况下:

c:\> python test1.py
c:\> python .\test1.py


您正在运行python本身,然后该文件是解释器的参数。因此python将受PATH的影响,但该文件是相对的。这两个文件路径都意味着要在同一目录中查找它,该目录是C:的根。由于文件不在此处,因此会导致错误。

第二种情况:

c:\> c:\Python27\Scripts\test1.py
c:\> test1.py


它是文件本身作为“可执行文件”运行,并考虑了PATH。在Unix上,这将使用shebang并以几乎相同的方式调用Shell,但是Windows并非如此。相反,它基本上在操作系统级别运行与.py扩展名相关联的任何东西,这很可能在新的Window中调用新的Python解释器,因此其行为在完成后便消失了。

在Windows上,由于没有shebang,所以我通常更喜欢直接运行python解释器并将脚本作为参数传递。我通常会首先切换到脚本所在的目录。这样,它以外壳为中心,而且我认为很简单。

您可以运行pushd .保存cwd,然后运行popd之后返回(可选)。它将在.cmd文件和类似文件中工作。

关于python - 开始Python教程,但有一些初学者的问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25798719/

10-16 17:53
查看更多