gpt4 book ai didi

python - Rails 应用程序中 Ruby 子外壳中的引用文件

转载 作者:太空宇宙 更新时间:2023-11-03 16:23:17 24 4
gpt4 key购买 nike

我在我的 Rails 应用程序中引用另一个目录中的文件时遇到问题。我在 my_app/app/controllers/concerns/my_controller 中有一个 Controller ,其中包含以下代码行:

@value = %x(python ../../lib/assets/python/test.py #{Shellwords.escape(params[:first_name])} 2>&1)

正在运行位于 my_app/lib/assets/python/test.py 中的 test.py%x() 子 shell .

当我从桌面引用该文件时,它会正确运行 test.py 代码。但是当我将脚本放在我的 lib/assets/python 文件夹中时,我得到了一个找不到文件或目录错误。

我应该如何正确引用我的 test.py 文件,以便 %x() 命令可以找到它?

最佳答案

如果未设置 PATH 以便运行您的代码的用户能够找到 python,那么您将收到该错误。

与其将其引用为 python 以强制系统尝试通过遍历 PATH 来定位 Python,不如使用解释器的完整路径。您通常可以通过键入

找到它
which python

在命令提示符处,然后将其放入代码中以替换单个单词 python


Ruby 的 File 类有几个非常有用的方法来查找从一个目录到另一个目录或特定文件的路径。看看:

我通常使用 realpath,因为它会在返回目标路径之前检查目标是否确实存在。

你可以像这样使用它:

File.realpath('../../path/to/file', File.dirname(__FILE__))

它应该返回相对于当前正在执行的脚本的路径。

您可以使用以下方式从运行脚本中引用:

File.realpath('../../path/to/file', File.dirname($0))

您需要弄清楚您的路径是基于 __FILE__ 还是 $0 以及它们之间的区别。

关于python - Rails 应用程序中 Ruby 子外壳中的引用文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30042153/

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