Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 错误:在路径中找不到命令((来自my_脚本)_Python_Bash_Pipenv - Fatal编程技术网

Python 错误:在路径中找不到命令((来自my_脚本)

Python 错误:在路径中找不到命令((来自my_脚本),python,bash,pipenv,Python,Bash,Pipenv,在使用Pipenv和Pytest处理PythonFastAPI项目时,我被要求编写一个Pipenv脚本来运行测试 项目具有以下结构: . ├── app | ├── main.py │   ├── my_package │   │   ├── __init__.py │   │   ├── (project folders) │   │   └── tests | | └── tests.py │   └── __pycache__ └──(deployment script

在使用Pipenv和Pytest处理PythonFastAPI项目时,我被要求编写一个Pipenv脚本来运行测试

项目具有以下结构:

.
├── app
|   ├── main.py
│   ├── my_package
│   │   ├── __init__.py
│   │   ├── (project folders)
│   │   └── tests
|   |       └── tests.py
│   └── __pycache__
└──(deployment scripts and folders, Pipfile, Dokerfile, etc)
我想从顶部结构(./app/../tests.py)对tests.py运行Pytest,至少现在是这样

根据建议,我目前使用以下工具从顶部运行它们:

( cd app ; python -m pytest my_package/tests/tests.py )
…这正是我们所期待的

但是,当我添加“我的Pipfile脚本”部分时:

[scripts]
my_script = "( cd app ; python -m pytest my_package/tests/tests.py )"
…使用以下命令运行它:

pipenv run my_script
我得到一个错误:

Error: the command ( (from my_script) could not be found within PATH.
我也试过:

[scripts]
my_script = "cd app && python -m pytest my_package/tests/tests.py"
…这将返回另一个类似的错误:

Error: the command cd (from my_script) could not be found within PATH.
所以很明显我用它作为bash别名是错误的。
我已经尝试过像我一样搜索更多关于[scripts]部分如何工作的文档,但我(还)运气不佳。

我不熟悉您正在使用的工具,但错误消息表明它正在寻找可执行文件。
是shell语法的一部分,
cd
是shell内置文件,而不是可执行文件。尝试以下操作:

my_script = "bash -c 'cd app && python -m pytest my_package/tests/tests.py'"
这里的
bash
是可执行文件,
-c
使其运行您的代码段


顺便说一句,请记住,
cd
可能会失败,因此如果失败,脚本应该退出。

如果添加
echopath=“echo%PATH%”
并运行它,将打印什么?除此之外,pipenv在我的Linux和MacOS机器上计算
cd x&&y
cd'x&&y'
,无法找到目录
x&&y
,因此这可能不会让您走得更远。无法按照您的要求执行,因为我遇到了一个错误:错误:命令echopath(来自我的脚本测试)在路径中找不到。但是,感谢您提供有关pipenv如何评估cmd:)@wjandrea的解决方案对我有效的信息。此外,由于“&&”,它可以完全恢复,也谢谢您