创建 deps.edn 文件时出现问题

2024-03-01

大家,我决定完全重写这篇文章,以清晰的方式展示它。

首先感谢大家的支持。我很感激。

这是“The Clojure Workshop - Packt”中的练习,我陷入了困境:

(我的 IDE 是 IntelliJ,我使用的是 Windows)。

练习 4.10:从 CSV 文件导入数据

1. 在计算机上方便的位置创建一个文件夹。

我决定创建一个全新的项目。

选择之间有什么区别吗莱宁根或 Deps https://i.stack.imgur.com/oPf6n.png?我大部分时间都使用 Leiningen,但是我应该使用 Deps 因为我要使用 deps.edn 文件吗?

2. 将 match_scores_1991-2016_UNINDEXED.csv 文件下载到您创建的文件夹中。 (这里在github https://github.com/PacktWorkshops/The-Clojure-Workshop/tree/master/Chapter04/tennis-data)

但是我应该在哪里下载这个文件呢?进入项目文件里面的src文件或者任何文件都可以吗?有什么区别吗?

我决定保存在 src 内部 https://i.stack.imgur.com/Mupvy.png.

3. 在编辑器的同一文件夹中,创建一个包含以下内容的 deps.edn 文件:

{:deps
 {org.clojure/data.csv {:mvn/version "0.1.4"}
  semantic-csv {:mvn/version "0.2.1-alpha1"}}}

所以,我创建了一个deps.edn https://i.stack.imgur.com/BTGn8.png file.

4. 通过评估 REPL 中的以下表达式来验证一切正常:

user> (require '[clojure.data.csv :as csv])
nil
user> (require '[clojure.java.io :as io])
nil
user> (with-open [r (io/reader "match_scores_1991-2016_unindexed_csv.csv")]
         (first (csv/read-csv r)))

为此项目创建了一个新的本地 Clojure REPL。

但是当我要评估测试表达式时,它在评估第二个和第三个表达式时显示错误。

正如你在这里看到的 https://i.stack.imgur.com/E4T30.png.

评估“clojure.data.csv:as csv”时出现的错误是:

Execution error (FileNotFoundException) at csv-example.core/eval1549 (form-init2604783929697477049.clj:1).
Could not locate clojure/data/csv__init.class, clojure/data/csv.clj or clojure/data/csv.cljc on classpath.

我缺少什么?几天来我一直在尝试解决这个问题,但没有找到任何答案。

谢谢你!


我将尝试回答这里的所有问题并带您进入下一阶段:

  1. 莱宁根使用project.clj文件。 Clojure CLI 使用deps.edn文件。因为这本书要求你创建一个deps.edn文件中,您需要使用 Clojure CLI(而不是 Leiningen)来启动 REPL 和/或运行代码。下面详细介绍这一点。

  2. 本书希望您下载.csv文件复制到您在步骤 1 中创建的文件夹中。该文件夹包含您的deps.edn文件。查看您的屏幕截图,您似乎要求 Cursive/IntelliJ 创建一个基于 Leiningen 的项目。如果您重新开始并要求 Cursive/IntelliJ 创建一个基于 Deps 的项目,您将拥有deps.edn文件位于项目顶部,您可以编辑该文件以使其看起来像本书想要的那样,最终您将得到:

  • deps.edn
  • match_scores_1991-2016_unindexed.csv
  • src

(也许还有 Cursive/IJ 可能创建的其他一些文件)

  1. 根据我在上面 2 中的评论,您将获得deps.edn文件——由 Cursive/IJ 创建——您可以在项目顶部进行编辑。

  2. 你得到的错误是因为你创建了一个 Leiningen 项目,然后启动了一个 Leiningen REPL —— 它不知道deps.edn所以它不会看到你在那里添加的内容(即使你把它放在项目的顶部,旁边project.clj)。所以 Leiningen 不知道您想要 CSV 库,因此当您尝试时它在 REPL 中不可用require它——并且因为require失败,你没有得到csv别名,所以调用csv/read-csv编译失败。

关于 Clojure CLI 的两点:

A。它比 Leiningen 使用起来简单得多,并且需要的项目结构也少得多。您可以在命令行手动创建基于 Deps 的项目。打开命令提示符(cmd.exe),您可以执行以下操作:

C:\Users\seanc>mkdir myproject

C:\Users\seanc>cd myproject

C:\Users\seanc\myproject>notepad deps.edn

C:\Users\seanc\myproject>dir
 Volume in drive C is Local Disk
 Volume Serial Number is 4459-1FFE

 Directory of C:\Users\seanc\myproject

01/05/2021  02:24 PM    <DIR>          .
01/05/2021  02:24 PM    <DIR>          ..
01/05/2021  02:25 PM               101 deps.edn
               1 File(s)            101 bytes
               2 Dir(s)  158,998,511,616 bytes free

(然后你可以下载.csv文件到myproject然后按照本书可能向您展示的方式启动 REPL——我希望它建议您运行clj该文件夹中的命令)

b.这就是您遇到问题的地方:Windows 并没有得到 Clojure 世界中许多工具和库的良好支持——几乎所有 Clojure 开发人员都使用 Mac 或 Linux。即使那些使用 Windows 的用户通常也使用 WSL2(在 Windows 10 上)和 Linux 版本,例如 Ubuntu。因为这比尝试使用 Windows 上的工具更容易。

有一个适用于 Windows 上 Powershell 的 Clojure CLI 预发行版本:https://github.com/clojure/tools.deps.alpha/wiki/clj-on-Windows https://github.com/clojure/tools.deps.alpha/wiki/clj-on-Windows

正如该页面底部所述,安装更容易Scoop然后使用它来安装 Clojure CLI。然后使用 Powershell 而不是命令提示符。

我不知道您对 WSL2/Linux 或 Powershell 有何看法——因为您是编程新手,我怀疑这一切都会显得有些复杂且令人畏惧。您可能会考虑放弃“The Clojure Workshop”(Packt 书籍通常都不是很好)并找到另一本书或在线教程来引导您完成使用莱宁根(最好是在 Windows 上——但这可能很难找到,因为很少有 Clojurians 使用 Windows)并尝试使用 Cursive/IJ 来完成该材料。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

创建 deps.edn 文件时出现问题 的相关文章

随机推荐