【问题标题】:Run python scripts from any folder under powershell in windows从windows中powershell下的任何文件夹运行python脚本
【发布时间】:2017-11-21 17:34:43
【问题描述】:

我有一个 python 脚本文件夹,我想从 windows 下的任何文件夹运行它。作为一个 python 解释器,我正在运行安装了 Miniconda 的 Python 3.6。

例如在文件夹C:\Users\name\my_scripts 中,我有一个名为test.py 的脚本,其内容如下。

print('test')

导航到运行脚本的文件夹后,使用 python 执行它会产生以下输出。

PS C:\Users\name\my_scripts> python test.py
test

PS C:\Users\name\my_scripts> cd..
PS C:\Users\name> python test.py
C:\Users\name\Miniconda3\python.exe: can't open file 'test.py': [Errno 2] No such file or directory

我尝试将 C:\Users\name\my_scripts 添加到 Path 。在 powershell 的任何文件夹中键入 test.py 会使用我的默认文本编辑器打开脚本,但使用 python test.py 表单在除脚本文件夹之外的任何位置执行脚本会导致找不到文件错误。

创建包含脚本文件夹的%PYTHONPATH%环境变量也不起作用。据我了解这是正常的,因为这个环境变量应该用于从特定位置导入模块,而不是自己执行模块。

有没有办法从任何给定位置执行my_scripts 文件夹中的脚本?

【问题讨论】:

  • python my_scripts\test.py 应该可以工作。

标签: python powershell environment-variables anaconda miniconda


【解决方案1】:

我认为你可以通过 3 种不同的方式做到这一点:

  • python ./path/to/script
  • 将您的文件打包,即 .whl 文件,然后 pip 安装它(尽管 conda 环境会警告您不要进行 pip 安装,但它仍然有效)
  • 创建自己的 .bat 文件,然后在启动 python 之前 cd 进入脚本文件夹,该 .bat 文件可以放在 ./Miniconda/Scripts 中,当您启动 conda 提示符时它会起作用

还有一种方法,但它很丑陋,不推荐,但它有效。 首先在 python 会话中找出 sys.path 中的文件夹,然后将 your_script.py 复制到那里的文件夹中。然后,您可以通过执行 python -m your_script.py 来获取该脚本 它会抱怨 your_script 不是一个模块,因此不推荐,但如果这是您正在寻找的,那么这是一个快速前进的方法。

hm,听起来你真的应该做一个 .bat 文件。 也许将其命名为 mp.bat 在那个 .bat 中,您可以执行 cd,还可以解析 cmd 行选项,因此您的 ps 行可以简单地是: mp.bat test.py 这似乎是你正在寻找的东西,有点谷歌搜索,我相信你会发现如何将参数放入 .bat 文件中

【讨论】:

  • 您能否详细说明将我的文件安装为一个包?我会通过输入python test.py 来执行它们吗?
【解决方案2】:

python my_scripts\test.py 应该可以工作。

更一般地,您使用解释器运行 python 脚本:python PATH_TO_SCRIPT

【讨论】:

  • 这就是我试图通过将我的脚本添加到Path 来规避的问题。我不想在使用脚本时输入脚本的整个路径。相反,我希望能够像执行 Python 时那样在任何地方按名称调用它们,方法是键入 python 而不是 path\to\python\python.exe
  • 编辑:不幸的是,使用python my_scripts\test.py执行脚本不起作用。我尝试将脚本目录的路径添加到Pathuser 变量,并尝试创建一个指向my_scripts-folder 的my_scriptsuser 变量
  • 我发现我可以通过输入python %my_scripts%\test.pycmd.exe 运行脚本,因为它被声明为用户变量。我还是更喜欢更短的 powershell 解决方案
  • 更新:powershell 解决方案是python $env:scripts\test.py,不幸的是这是一个相当长的命令
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-11-09
  • 1970-01-01
  • 2019-12-02
  • 1970-01-01
  • 2013-03-06
  • 1970-01-01
  • 2016-05-12
相关资源
最近更新 更多