首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Guile Scheme中打开相对于源文件目录的文件?

如何在Guile Scheme中打开相对于源文件目录的文件?
EN

Stack Overflow用户
提问于 2021-02-27 15:48:57
回答 1查看 177关注 0票数 0

我正在为一个正在开发的Python项目编写一个Guix开发环境定义,它看起来像这样:

代码语言:javascript
复制
(use-modules (gnu packages)
             (gnu packages python)
             (gnu packages python-crypto)
             (gnu packages python-web)
             (gnu packages python-xyz)
             (ice-9 rdelim)
             ((guix licenses) #:prefix license:)
             (guix build-system python)
             (guix download)
             (guix packages))

(define (requirements-file->guix-packages filename)
  (let* ((requirements-text (with-input-from-file filename read-string))
         (requirements-list (string-split requirements-text #\newline)))
    (map (lambda (requirement)
           (specification->package (string-append "python-" requirement)))
         requirements-list)))

(define internsidor-deps      (requirements-file->guix-packages "requirements.in"))
(define development-tools     (list python-pip python-wrapper python-virtualenv python-jedi))

(append internsidor-deps development-tools)

现在,如果站在requirements.inrequirements-prod.in所在的项目文件夹的根目录下进行计算,这段代码就可以正常工作。但是如果用户移动到子文件夹并运行如下代码

代码语言:javascript
复制
guix environment --ad-hoc --load='../development-environment.scm'

他们会发现自己出现了以下错误

代码语言:javascript
复制
guix environment: error: while evaluating '../development-environment.scm', it failed opening 'requirements.in' with the error: No such file or directory

(或者这些方面的错误,我已经修改了我的Guix,以便为这个失败提供更好的错误消息。)

因此,我的问题是:如何修改对with-input-from-file的调用,使路径相对于方案文件而不是外壳的$PWD

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-02-27 18:12:24

您可以使用(dirname (current-filename))获取当前文件的目录。另请参阅https://www.gnu.org/software/guile/manual/guile.html#Source-Properties

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66396681

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档