gpt4 book ai didi

pipenv - 如何在 Pipfile 的 [脚本] 中运行 "cd"命令?

转载 作者:行者123 更新时间:2023-12-04 09:08:35 24 4
gpt4 key购买 nike

我需要在 Pipfile 中做这样的事情:

...
[scripts]
my_script = "cd folder"
...

最佳答案

使用 cd实际上有效。它似乎不起作用,因为 pipenv run 产生一个新的 shell(与您运行 pipenv run 的 shell 不同),并在那里运行您的命令。在那个单独的 shell 中,它将 cd到文件夹......然后简单地退出。在您执行的原始 shell 中 pipenv run ,您仍将位于同一文件夹中。
您可以检查它是否可以正确访问文件夹:

StackOverflow$ tree -L 2 .
.
├── Pipfile
├── Pipfile.lock
├── folder
│ ├── file1.txt
│ ├── file2.txt
│ └── file3.txt
└── ...

StackOverflow$ cat Pipfile
...
[scripts]
# To use multiple commands, wrap with `bash -c`
# See https://github.com/pypa/pipenv/issues/2038
my_script = "bash -c 'cd folder && ls'"

StackOverflow$ pipenv run my_script
file1.txt file2.txt file3.txt

StackOverflow$
脚本快捷方式生成了一个成功的 shell cd -ed 进入 folder ,但在原始 shell 中,您仍位于同一目录中(在本例中为“StackOverflow”)。
现在,我不知道为 cd 创建快捷方式的预期目的是什么-ing 到一个文件夹中。我认为这不是 my_script 的唯一命令,因为做 cd folder会比 pipenv run my_script 更简单.
如果您打算在该文件夹中进行一些操作,那么我建议为您的所有其他命令编写一个单独的脚本,只需使用 [scripts]调用该脚本的快捷方式。
StackOverflow$ tree -L 2 .
.
├── Pipfile
├── Pipfile.lock
├── folder
│ ├── file1.txt
│ ├── file2.txt
│ └── file3.txt
└── scripts
└── my_script.sh

StackOverflow$ cat my_script.sh
#!/bin/bash
cd folder
for file in *
do
echo "Doing something to $file"
sleep 3
done
echo "Done."

StackOverflow$ cat Pipfile
...
[scripts]
my_script = "./scripts/my_script.sh"

StackOverflow$ pipenv run my_script
Doing something to file1.txt
Doing something to file2.txt
Doing something to file3.txt
Done.
[script]快捷方式仍然可以正常工作(即 cd 进入文件夹并在那里做事)。它也比链接命令更好, pipenv 已经讨论过链接命令。维护者不是其预期目的。
  • https://github.com/pypa/pipenv/issues/2878
  • https://github.com/pypa/pipenv/issues/2160
  • 关于pipenv - 如何在 Pipfile 的 [脚本] 中运行 "cd"命令?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63400851/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com